2013-11-26 128 views
2

我需要在骨幹視圖內的窗口對象上綁定事件,並且在導航到其他骨幹視圖時,我想要解除綁定窗口事件。有沒有任何有效的方法來做到這一點在骨幹?如何在骨幹視圖中綁定/解除綁定窗口事件

例如:

class Example.Views.EntriesList extends Backbone.View 

    initialize: -> 

    $(window).unbind('scroll').on 'scroll', _.bind(@scroll, this) 

上面的代碼工作完美的這個觀點,但是當導航到不同的骨幹視圖,然後滾動綁定仍然存在。我想在查看更改時刪除綁定到窗口的所有事件。

回答

4

你真的應該打電話給View#remove清理一個視圖,然後再忘記它。所以,你應該有一個remove像這樣在您的看法:

remove: -> 
    $(window).off('scroll') 
    super() 

請記住,你可能與其他代碼通過解除綁定所有聽衆干擾到'scroll'事件上window當你$(window).off('scroll')和可能做比你想要的更多。您最好使用命名空間:

initialize: -> 
    # The caller should have cleaned everything up so no need to `off` here. 
    $(window).on('scroll.EntriesList', _.bind(@scroll, @)) 
remove: -> 
    $(window).off('scroll.EntriesList') 
    # or .off('.EntriesList') 

使您的視圖不會干擾應用程序的其他部分。

+0

感謝您的正確答案和更多的細節。 –