Подтвердить что ты не робот

Backbone 0.9.9: Разница между listenTo и on

Я пытаюсь изучить новые изменения, которые они сделали в Backbone 0.9.9.

В настоящее время у меня возникают проблемы, чтобы понять разницу между listenTo и on:

listenTo

var View = Backbone.View.extend({

    tagName: "div",

    intialize: function() {
        this.listenTo(this.model, 'change', this.render);
    },

    render: function() {
        this.$el.empty();
        this.$el.append('<p>hello world</p>');
    }

});

на

var View = Backbone.View.extend({

    tagName: "div",

    intialize: function() {
        this.model.on('change', this.render, this);
    },

    render: function() {
        this.$el.empty();
        this.$el.append('<p>hello world</p>');
    }

});

Я слышал, что listenTo позволяет с stopListening отказаться от подписки на все события, когда, например, удаляется вид, чтобы избежать утечек памяти.

Это единственная причина?

4b9b3361

Ответ 1

listenTo и stopListening пришли из сообщества, в основном. Они помогают упростить привязку и отключение событий.

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

Джонни Ошика - первый человек, которого я видел с помощью этой техники. Первоначально он был отправлен как ответ на вопрос StackOverflow: Backbone.js: повторить или воссоздать представление?

Вы можете прочитать, что я написал об этом, здесь:

Ответ 2

Когда вы создаете представление, listenTo и on добавляют обработку событий. Однако, когда представление уничтожено, вызов listenTo автоматически удалит обработчик событий. Это предотвращает утечку памяти и прослушиватели событий в зомби.

Итак, используйте on, если вы хотите самостоятельно управлять обработчиком. Обязательно позвоните off. В противном случае вызовите listenTo.