有没有办法删除骨干视图实例化的所有事件侦听?例如,假设我有以下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
如何删除事件监听器?
答案 0 :(得分:14)
您视图中的任何位置:
this.undelegateEvents();
然后,您可以稍后使用delegateEvents();
我使用添加到Backbone.View原型的方法来轻松清理视图:
Backbone.View.prototype.close = function() {
this.undelegateEvents();
this.remove();
}
// internal usage
this.close();
// external usage
myView.close();
编辑19/07/2013
Backbone v0.9.9将.listenTo()
方法添加到视图中,以便在删除视图时轻松取消绑定外部事件。
您可以在这里阅读更多内容: