我已经开始使用 Backbone。
在学习 Backbone 时,我了解到使用 .listenTo 代替 .on 的优点是,listenTo 允许“对象跟踪事件”。
我没明白这句话想说什么。好吧,我只能看到 .on 和 .listenTo 之间的区别在于语法。
最佳答案
考虑两个调用:
this.model.on('change', this.some_method);
this.listenTo(this.model, 'change', this.some_method);
第一种情况:
this.model
知道有人正在监听'change'
事件,但不知道是谁。this
不知道它正在监听什么,除非您明确跟踪您进行的on
调用。
第二种情况:
this.model
知道有人正在监听'change'
事件,但不知道是谁。this
知道它正在监听来自this.model
的事件。
所以,是的,语法是不同的,但主要区别在于谁知道谁在听:使用 on
时,只有被听的事物知道有一个监听器;通过listenTo
,听众也知道他们正在听什么。
如果您想停止监听事件,那么区别很重要。如果您使用on
那么您必须维护自己正在收听的内容列表,以便您可以off
他们;如果您使用listenTo
然后 listenTo
会跟踪它,您可以简单地 stopListening
.
例如,View#remove
看起来像这样:
remove: function() {
this.$el.remove();
this.stopListening();
return this;
}
这样你就可以调用view.remove()
,它会自动清除你拥有的任何事件绑定(bind)(只要你使用listenTo
)和僵尸的机会听众急剧减少。
关于backbone.js - 通过listenTo跟踪主干事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17205098/