如何在骨干中跟踪事件触发器(为集合中的每个模型添加触发器)

时间:2015-03-09 13:52:49

标签: backbone.js coffeescript

我在Backbone视图中有一些意想不到的行为,"添加"正在为获取的集合中的每个模型触发,但我希望只是同步。所以我知道一些有趣的事情正在发生,但是当代码触及大量文件时,我无法检测它是什么。

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

例如,当我跑:

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

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

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

1 个答案:

答案 0 :(得分:0)

常规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个事件。 reset(...)的{​​{3}};请注意它使用this.add(...)但传递silent标记。因此,您将获得一个reset事件,然后是一个sync事件。