[英]Remove all event listeners of a Backbone view
有沒有辦法刪除骨干視圖實例化的所有事件偵聽? 例如,假設我有以下HTML / JavaScript。 點擊#box后,我想要一個彈出窗口打招呼。
<div id="box" style="height: 100px; width: 100px; background-color: red"></div>
var Listener = Backbone.View.extend({
el: "#box",
events: {
'click #box' : 'hello'
},
hello: function () {
alert('hello!');
}
})
var listener = new Listener();
現在,我想刪除事件監聽器。 將偵聽器設置為其他內容不起作用:
listener = ''; // doesn't work
如何刪除事件監聽器?
視圖中的任何位置:
this.undelegateEvents();
然后,您可以使用delegateEvents();
在以后手動重新綁定事件delegateEvents();
我使用添加到Backbone.View原型的方法來輕松清理視圖:
Backbone.View.prototype.close = function() {
this.undelegateEvents();
this.remove();
}
// internal usage
this.close();
// external usage
myView.close();
編輯19/07/2013
Backbone .listenTo()
將.listenTo()
方法添加到視圖中,從而可以在刪除視圖時輕松取消綁定外部事件。
你可以在這里閱讀更多:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.