【问题标题】:How to trigger / bind custom events in Backbone.js views?如何在 Backbone.js 视图中触发/绑定自定义事件?
【发布时间】:2011-07-19 18:06:27
【问题描述】:

我有一个使用iScroll 来实现幻灯片的主干视图。

iScroll 发布了一个 onScrollEnd 事件,但我似乎无法在视图中绑定/订阅它:

App.Views.Scroller = Backbone.View.extend({

    events: {
        'onScrollEnd' : 'scrollEnd'
    },

    initialize: function(){
        var self = this;
        this.scroller = new iScroll('content-scroller', {
            onScrollEnd: function() {  
                self.trigger('onScrollEnd');
            }
        });     
    },

    scrollEnd: function(e){
        // never called :(
        console.log(e);
    }

});

【问题讨论】:

  • 我也尝试使用 Backbone.Events 扩展滚动对象

标签: javascript events backbone.js


【解决方案1】:

这可能并不明显,但backbone.js 视图中的event 属性仅用于DOM 事件。自定义事件应绑定为James Brown mentioned above

【讨论】:

  • 对我来说,这个答案与接受的答案一样重要。谢谢。
【解决方案2】:

您的 onScrollEnd 事件绑定到视图的顶部元素;当视图的 HTML 元素收到 onScrollEnd 事件时,将调用 scrollEnd。

但是您在 View 对象而不是元素上触发了 onScrollend 事件。

所以你可能想说$(self.el).trigger('onScrollEnd');,或者直接调用函数:self.scrollEnd()

【讨论】:

  • 我最终只是直接调用了该函数。似乎打败了这一点,但它有效:)
  • 或者不那么冗长self.$el.trigger('onScrollEnd');
【解决方案3】:

你应该直接调用这个函数,或者在你的 init 中添加这个:

self.bind('onScrollEnd', self.scrollEnd);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-02-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多