Javascript 运行基于集合侦听器的方法的主干

Javascript 运行基于集合侦听器的方法的主干,javascript,backbone.js,backbone.js-collections,backbone-model,Javascript,Backbone.js,Backbone.js 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; }, 获取集合这一点非常

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

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

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

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

获取集合这一点非常简单,只要它与服务器同步,就可以运行渲染集合。在编写这一系列代码时,这似乎是一个好主意,但现在看来,当我保存集合的模型时,它会运行同步侦听器并再次运行渲染。这不是我想要的行为。是否有其他侦听器可用于侦听初始提取是否完成?

根据主干文档

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

该事件本质上是与服务器通信的任何CRUD操作的总括,这就是为什么在保存模型时触发它。深入查看文档可以提供.fetch如何工作的线索

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


通过修改对this.collection.fetch{reset:true}的调用,集合将加载数据并触发一个重置事件,该事件可以侦听而不是同步。这将解决您的问题。

u可以使用fetch{reset:true}标志侦听reset和fetch,但这不是初始fetch的100%。不确定,但我会尝试在fetch{initial:true}中提供一些额外的标志,并在回调this.collection.on'sync',functionopt{opt.initial&&this.render},this;您还可以将render函数作为成功回调传递给fetch方法