我的所有观点附有一个关闭功能,
Backbone.View.prototype.close = function()
{
this.remove();
this.unbind();
if (this.closeMe) this.closeMe();
};
在closeMe()函数内部视图中,我调用了off()函数来从模型和集合中删除以前绑定的回调函数。
closeMe: function()
{
if(this.model)
this.model.off(null, null, this);
...
}
问题是,如果我在初始化函数中有一些变量附加到当前视图,我是否需要通过closeMe()函数处理它们?
initialize : function(options)
{
...
this.myVar= options.something;
}
答案 0 :(得分:1)
garbage collector为您完成这项工作。
垃圾收集器算法减少了&#34的定义;不再需要对象" to"一个对象没有引用它的其他对象"。如果指向此对象的引用为零,则该对象被视为可以收集垃圾。
当对视图的引用指向零引用时,垃圾收集器将删除此对象。此时,如果对象myVar
没有指向它的引用,垃圾收集器将删除它。
顺便说一下,我建议使用方法listenTo
来监听事件而不是方法on
,因为这样可以简化代码。在Backbone View上调用remove
时,从DOM中删除一个视图,并在视图上调用stopListening
以删除视图已经侦听的任何绑定事件。