Как мне уничтожить этот экземпляр Backbone.js View? - PullRequest
5 голосов
/ 05 декабря 2011
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();

Как мне уничтожить экземпляр? Когда переключатель активирован, я хочу, чтобы экземпляр этого представления исчезал навсегда.

Ответы [ 3 ]

6 голосов
/ 26 июля 2012

Мой ответ на подобный вопрос был получен хорошо, и он хорошо сработал для меня.Вот взгляд на мою функцию 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);

    }

Мне показалось это излишним, но другие подходы не совсем помогли.

3 голосов
/ 05 декабря 2011

Не назначайте экземпляр какой-либо переменной (я не вижу необходимости в этом, поскольку представления в магистрали управляются событиями), а в вашем методе toggleCheckFriend удаляйте все данные и события, что делает экземпляр доступным для мусора. коллекция.

    toggleCheckFriend:function(){
    $(this.el).removeData().unbind();

    }
0 голосов
/ 05 декабря 2011

За этим видом стоит модель?

Если вы хотите удалить модель (из БД), вы можете использовать: this.model.destroy()

После этого вы можете удалить только само представление из DOM, вызвав this.remove().В документации упоминается, что она эквивалентна $(this.el).remove().

Обратите внимание, что вышеприведенное «this» относится к самому представлению, поэтому вам придется _.bindAll(this, 'toggleCheckFriend')

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...