【发布时间】:2012-11-07 06:55:37
【问题描述】:
我正在开发一个 Backbone 应用程序。我创建了具有 destroy 方法的基本视图,所有其他视图都对其进行了扩展。
在销毁视图实例时,我想确保如果视图具有模型或集合,我将取消绑定它正在侦听的任何事件。
假设我在视图的初始化中使用下划线的 _.bindAll,是否会关闭 下面的语句删除引用。
var DocumentRow = Backbone.View.extend({
initialize: function() {
_.bindAll( this );
this.model.on('change', this.render);
},
destroy : function() {
// Will this work?
this.model.off(null, null, this);
}
});
或者我需要像这样显式绑定事件
this.model.on('change', this.render, this);
【问题讨论】:
-
为什么将 null 传递给 model.off?
-
移除视图中的所有回调。基于 Backbone 文档中的示例: // 删除所有事件的
context的所有回调。 object.off(null, null, context); -
好的。我认为 this.model.on('change', this.render);应该可以正常工作,因为渲染将绑定到“this”,即您的 DocumentRow。
标签: javascript backbone.js underscore.js