我正在尝试学习他们在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条答案
按热度按时间gijlo24d1#
当你创建一个视图时,
listenTo
和on
都添加了事件处理。但是,当视图被破坏时,listenTo
调用将automatically remove the event handler。这个prevents memory leaks和zombie事件监听器。所以,如果你想自己管理这个处理程序,就使用
on
。只要确保调用off
即可。否则,就调用listenTo
。neskvpey2#
基本上,
listenTo
和stopListening
来自社区,它们有助于简化绑定和取消绑定事件。有很多现有的文档和博客文章围绕着这个想法,包括我写的关于这个主题的东西。
Johnny Oshika是我看到的第一个使用这种技巧的人。它最初是作为一个StackOverflow问题的答案发布在这里的: Backbone 网. js:是否重新填充或重新创建视图?
你可以在这里读到我写的关于这个的文章: