【问题标题】:Tracking Backbone Event via listenTo通过listenTo跟踪主干事件
【发布时间】:2014-06-13 07:37:17
【问题描述】:

我已经开始使用 Backbone。

在学习 Backbone 的过程中,我了解到使用 .listenTo 而不是 .on 的优势在于,listenTo 允许“对象跟踪事件”。

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

【问题讨论】:

    标签: backbone.js backbone-events


    【解决方案1】:

    考虑两个调用:

    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(),它会自动清理你拥有的任何事件绑定(只要你使用listenTo),并且僵尸监听器的机会大大减少。

    【讨论】:

    • 哦!我知道了。感谢您的指导。我没有在 Backbone Home 网站本身中找到此类详细信息。
    • @iCyber​​netics:listenTo 的实用性在您使用 Backbone 时更容易看到,而没有 listenTo 方法。
    • 是的!从 Backbonejs.org 提供的 Change-log 中获取所有信息
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多