[英]How do I destroy this Backbone.js View instance?
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();
我該如何銷毀實例? 當激活切換時,我希望該視圖的實例永遠消失。
我對類似問題的回答很好,對我來說效果很好。 這是我的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);
}
對我來說似乎有些過分,但其他方法並沒有完全解決問題。
不要將實例分配給任何變量(我沒有看到任何需要,因為骨干中的視圖是由事件驅動的),並且在你的toggleCheckFriend
方法中刪除所有數據和事件,這使得實例可用於垃圾收集。
toggleCheckFriend:function(){
$(this.el).removeData().unbind();
}
那個視圖背后有一個模型嗎?
如果要刪除模型(從數據庫中刪除),可以使用: this.model.destroy()
之后,您可以通過調用this.remove()
從DOM中刪除View本身。 文檔提到它相當於$(this.el).remove()
。
請注意,上面的'this'指的是View本身,所以你必須_.bindAll(this, 'toggleCheckFriend')
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.