如何在Backbone.js视图中触发/绑定自定义事件?

如何在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); 
    } 

}); 
+0

我也试图扩大与Backbone.Events – meleyal 2011-03-21 15:55:02

你onScrollEnd事件被绑定到视图*元素;当视图的HTML元素收到一个onScrollEnd事件时,会调用scrollEnd。

但你触发了您的视图对象,而不是元素的onScrollend事件。

因此,您可能想要说$(self.el).trigger('onScrollEnd');,或者直接调用该函数:self.scrollEnd()

+0

最后我只需要直接调用函数的滚动对象。似乎击败了这一点,但它的工作原理:) – meleyal 2011-03-21 17:54:00

+1

或更少的详细'self。$ el.trigger('onScrollEnd');'。 – VisioN 2014-10-30 11:06:27

您应该直接或者在你的初始化调用的函数,补充一点:

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

它可能不是很明显,但在Backbone.js的意见event属性只用于DOM事件。自定义事件应绑定为James Brown mentioned above

+2

对我来说,这个答案和接受的答案一样重要。谢谢。 – 2012-07-17 13:20:00