在我的应用程序中有以下代码,
initialize: function() {
Pops.Collections.TeamCollection = this.collection;
this.collection.fetch();
this.collection.on('sync', this.render, this);
},
render: function() {
this.addAll();
return this;
},
它非常自我解释,获取集合,一旦与服务器同步运行渲染集合。在编写这段代码时,它似乎是一个好主意,但现在看来,当我保存集合的模型时,它运行同步监听器并再次运行渲染。这不是我想要的行为。是否有另一个监听器可以用来监听初始提取是否完成?
答案 0 :(得分:0)
根据骨干文件,
Backbone.sync是Backbone每次尝试将模型读取或保存到服务器时调用的函数。
该活动基本上是" catch-all"对于与服务器通信的任何CRUD操作,这就是它在保存模型时被解雇的原因。深入了解文档可以找到.fetch()
如何工作的线索</ p>
当模型数据从服务器返回时,它使用set来(智能地)合并获取的模型,除非你传递{reset:true},在这种情况下集合将被(有效地)重置。
通过修改对this.collection.fetch({reset: true})
的调用,该集合将加载数据并触发可以收听而不是reset
的{{1}}事件。这将解决您的问题。