Javascript 如何销毁这个Backbone.js视图实例?
如何销毁实例?当切换被激活时,我希望该视图的实例永远消失。不要将实例分配给任何变量(我看不出有任何必要,因为主干中的视图是由事件驱动的),并且在您的Javascript 如何销毁这个Backbone.js视图实例?,javascript,jquery,oop,backbone.js,Javascript,Jquery,Oop,Backbone.js,如何销毁实例?当切换被激活时,我希望该视图的实例永远消失。不要将实例分配给任何变量(我看不出有任何必要,因为主干中的视图是由事件驱动的),并且在您的toggleCheckFriend方法中删除所有数据和事件,从而使实例可用于垃圾收集 var CheckboxView = Backbone.View.extend({ tagName:'div', template: _.template(item_temp,{}), events:{
toggleCheckFriend
方法中删除所有数据和事件,从而使实例可用于垃圾收集
var CheckboxView = Backbone.View.extend({
tagName:'div',
template: _.template(item_temp,{}),
events:{
'click .checkoff_friend':'toggleCheckFriend',
},
initialize: function(){
},
render:function(){
},
toggleCheckFriend:function(){
//destroy this View instance.
}
});
var cv = new CheckboxView();
那个视图背后有模型吗 如果要删除模型(从数据库中),可以使用:
this.model.destroy()
之后,您可以通过调用this.remove()
从DOM中删除视图本身。文档提到它相当于$(this.el).remove()
请注意,上面的“this”指的是视图本身,因此您必须
.bindAll(this,'toggleCheckFriend')
我对一个类似问题的回答得到了很好的接受,并且对我来说效果很好。下面是我的销毁视图函数
(原问题)
答复:
我必须绝对确保视图不仅从DOM中删除,而且完全不受事件的约束
toggleCheckFriend:function(){
$(this.el).removeData().unbind();
}
对我来说似乎有些过分,但其他方法并没有完全奏效。你不需要u.bindAll(这是“toggleCheckFriend”)。DOM事件回调的上下文将自动成为视图。@JohnnyO:我主要在其中包含管道命令的上下文。以防万一,除了用户直接触发之外,还有一些元素可以触发它。(即,页面有一个CheckAllCheckBox)
destroy_view: function() {
//COMPLETELY UNBIND THE VIEW
this.undelegateEvents();
$(this.el).removeData().unbind();
//Remove view from DOM
this.remove();
Backbone.View.prototype.remove.call(this);
}