我已经开始使用 Backbone。
在学习 Backbone 时,我了解到使用 .listenTo 而不是 .on 的优点是 listenTo 允许“对象跟踪事件”。
我没有明白这句话想说什么。好吧,我只能看到 .on 和 .listenTo 之间的区别在于语法。
我已经开始使用 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
thenlistenTo
跟踪它,你可以简单地stopListening
.
例如,View#remove
看起来像这样:
remove: function() {
this.$el.remove();
this.stopListening();
return this;
}
所以你可以打电话view.remove()
,它会自动清理你拥有的任何事件绑定(只要你使用过listenTo
),并且僵尸监听器的机会大大减少。