Backbone运行基于集合侦听器的方法

时间:2014-11-19 11:26:59

标签: javascript backbone.js backbone-collections backbone-model

在我的应用程序中有以下代码,

initialize: function() {
    Pops.Collections.TeamCollection = this.collection;
    this.collection.fetch();

    this.collection.on('sync', this.render, this);
},

render: function() {
    this.addAll();
    return this;
},

它非常自我解释,获取集合,一旦与服务器同步运行渲染集合。在编写这段代码时,它似乎是一个好主意,但现在看来,当我保存集合的模型时,它运行同步监听器并再次运行渲染。这不是我想要的行为。是否有另一个监听器可以用来监听初始提取是否完成?

1 个答案:

答案 0 :(得分:0)

根据骨干文件,

  

Backbone.sync是Backbone每次尝试将模型读取或保存到服务器时调用的函数。

该活动基本上是&#34; catch-all&#34;对于与服务器通信的任何CRUD操作,这就是它在保存模型时被解雇的原因。深入了解文档可以找到.fetch()如何工作的线索<​​/ p>

  

当模型数据从服务器返回时,它使用set来(智能地)合并获取的模型,除非你传递{reset:true},在这种情况下集合将被(有效地)重置。

通过修改对this.collection.fetch({reset: true})的调用,该集合将加载数据并触发可以收听而不是reset的{​​{1}}事件。这将解决您的问题。