如何销毁这个Backbone.js视图实例?

How do I destroy this Backbone.js View instance?

本文关键字:视图 实例 js Backbone 何销毁      更新时间:2023-09-26
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();

如何销毁实例?当toggle被激活时,我希望该视图的实例永远消失

我对一个类似问题的回答很受欢迎,对我来说也很有效。下面是我的destroy_view函数

(源自。问题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中删除视图本身。文档提到它相当于$(this.el).remove()

注意,上面的'this'指的是视图本身,所以你必须_.bindAll(this, 'toggleCheckFriend')