backbone.js - 通过listenTo跟踪主干事件

标签 backbone.js backbone-events

我已经开始使用 Backbone。

在学习 Backbone 时,我了解到使用 .listenTo 代替 .on 的优点是,listenTo 允许“对象跟踪事件”。

我没明白这句话想说什么。好吧,我只能看到 .on 和 .listenTo 之间的区别在于语法。

最佳答案

考虑两个调用:

this.model.on('change', this.some_method);
this.listenTo(this.model, 'change', this.some_method);

第一种情况:

  1. this.model 知道有人正在监听 'change' 事件,但不知道是谁。
  2. this 不知道它正在监听什么,除非您明确跟踪您进行的 on 调用。

第二种情况:

  1. this.model 知道有人正在监听 'change' 事件,但不知道是谁。
  2. 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/

相关文章:

javascript - 主干 View 可以有多个集合吗?

javascript - 主干路由 : Before & after hooks?

backbone.js - Requirejs 使用 shim

javascript - 简单事件backbone.js错误

javascript - 使用backbone.js 和 jQuery 绑定(bind)点击事件

php - 主干获取对象

javascript - Marionette js 使用 requirejs 从 Controller 访问应用程序

javascript - 使用 Backbone 的 Fetch() 发出 AJAX 请求时如何访问 XHR 对象?

javascript - 在 backbone.js 中如何触发 View 卸载事件?

javascript - 我如何延迟绑定(bind) backbone.js 中的事件直到特定时间?