簡體   English   中英

如何銷毀此Backbone.js View實例?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM