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
,