【问题标题】:How to trace an event trigger in backbone (add triggered for every model in collection)如何在主干中跟踪事件触发器(为集合中的每个模型添加触发器)
【发布时间】:2015-03-09 13:52:49
【问题描述】:

我在 Backbone 视图中有一些意外行为,“添加”正在为已获取的集合中的每个模型触发,但我希望只是同步。所以我知道发生了一些有趣的事情,但是由于代码涉及很多文件,所以我无法检测到它是什么。

有人对我如何调试触发添加的位置/内容有任何建议吗?或者甚至是什么可能导致我在获取集合时为每个模型触发添加?

例如,当我运行时:

@listenTo @collection, 'add', @adding
@listenTo @collection, 'sync', @synching

adding: -> console.log 'adding'
synching: -> console.log 'synching'

我得到了 20 次“渲染”记录(集合中的模型数量),但正如预期的那样,只“同步”了一次。

【问题讨论】:

    标签: backbone.js coffeescript


    【解决方案1】:

    普通的Backbone.Collection.fetch(...) 使用Collection.set(...) 来填充模型。 Here's the line from the source 显示代码。 Collection.set(...) 为每个返回的模型触发 add 事件。

    如果您实际上是在获取“初始”模型集,您可能希望在返回数据时“重置”集合:

    var collection = new MyCollection();
    collection.fetch({ reset: true });
    

    这将导致集合在返回数据时使用reset,这不会触发add 事件。 Here's the sourcereset(...);请注意,它使用this.add(...),但传入silent 标志。所以你会得到一个 reset 事件,然后是一个 sync 事件。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多