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);

    }