2011-03-21 264 views
33

我有一個使用​​實現幻燈片骨幹視圖。如何在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

回答

24

你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

18

您應該直接或者在你的初始化調用的函數,補充一點:

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

它可能不是很明顯,但在Backbone.js的意見event屬性只用於DOM事件。自定義事件應綁定爲James Brown mentioned above

+2

對我來說,這個答案和接受的答案一樣重要。謝謝。 – 2012-07-17 13:20:00

相關問題