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

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

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

слушать

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 отписаться от всех событий, когда, например, представление удаляется, чтобы избежать утечек памяти.

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

2 ответа

Решение

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

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

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

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

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

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

Другие вопросы по тегам