如何在Backbone.js视图中触发/绑定自定义事件?
问题描述:
我有一个使用实现幻灯片骨干视图。如何在Backbone.js视图中触发/绑定自定义事件?
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);
}
});
答
你onScrollEnd事件被绑定到视图*元素;当视图的HTML元素收到一个onScrollEnd事件时,会调用scrollEnd。
但你触发了您的视图对象,而不是元素的onScrollend事件。
因此,您可能想要说$(self.el).trigger('onScrollEnd');
,或者直接调用该函数:self.scrollEnd()
。
答
您应该直接或者在你的初始化调用的函数,补充一点:
self.bind('onScrollEnd', self.scrollEnd);
答
它可能不是很明显,但在Backbone.js的意见event
属性只用于DOM事件。自定义事件应绑定为James Brown mentioned above。
+2
对我来说,这个答案和接受的答案一样重要。谢谢。 – 2012-07-17 13:20:00
我也试图扩大与Backbone.Events – meleyal 2011-03-21 15:55:02