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();
如何销毁实例?当激活切换时,我希望该视图的实例永远消失。
答案 0 :(得分:6)
我对类似问题的回答很好,对我来说效果很好。这是我的destroy_view函数
(orig。问题https://stackoverflow.com/a/11534056/986832) 响应:
我必须绝对确定视图不仅仅是从DOM中移除,而且还完全不受事件限制。
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);
}
对我而言似乎有些过分,但其他方法并没有完全解决问题。
答案 1 :(得分:3)
不要将实例分配给任何变量(我认为没有必要,因为骨干中的视图是由事件驱动的),并且在toggleCheckFriend
方法中删除所有数据和事件,这使得实例可用用于垃圾收集。
toggleCheckFriend:function(){
$(this.el).removeData().unbind();
}
答案 2 :(得分:0)
该视图背后是否有模型?
如果您希望删除模型(来自数据库),您可以使用:this.model.destroy()
之后,您可以通过调用this.remove()
从DOM中删除View本身。文档提到它相当于$(this.el).remove()
。
请注意,上面的“this”指的是视图本身,因此您必须_.bindAll(this, 'toggleCheckFriend')