Javascript 如何在Backbone.js视图中触发/绑定自定义事件?
我有一个主干视图,用于实现幻灯片放映 iScroll发布一个Javascript 如何在Backbone.js视图中触发/绑定自定义事件?,javascript,events,backbone.js,Javascript,Events,Backbone.js,我有一个主干视图,用于实现幻灯片放映 iScroll发布一个onScrollEnd事件,但我似乎无法在视图中绑定/订阅它: App.Views.Scroller = Backbone.View.extend({ events: { 'onScrollEnd' : 'scrollEnd' }, initialize: function(){ var self = this; this.scroller = new iScr
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);
}
});
onScrollEnd事件绑定到视图的顶部元素;当视图的HTML元素收到onScrollEnd事件时,将调用scrollEnd 但是您正在视图对象而不是元素上触发onScrollend事件
所以您可能想说
$(self.el).trigger('onScrollEnd')
或者直接调用函数:self.scrollEnd()
您应该直接调用函数,或者在init中添加以下内容:
self.bind('onScrollEnd', self.scrollEnd);
这可能不明显,但backbone.js视图中的
event
属性仅用于DOM事件。自定义事件应绑定为。我还尝试使用主干扩展scroller对象。events我只是直接调用了函数。似乎不符合这一点,但它是有效的:)或者更详细的self.$el.trigger('onScrollEnd')对我来说,这个答案和公认的答案一样重要。谢谢