2013-10-27 54 views
1

我想弄清楚如何保持模型集合与我的服务器同步。此刻,我的代码看起来是这样,但它显然有几个问题...骨干收集同步

var myCollection = Backbone.Collection.extend({ 
    url: '/api/block', 

    ... 

    sync: function() { 
     _.each(this.models, function(model) { 
      model.sync('create', model); 
     }); 
    } 

}); 

此刻,当我打电话同步在我的收藏,它通过所有型号的迭代,并调用同步在他们每个人。我很惊讶,首先,这不是Backbone.Collection.sync方法的默认行为。或者我误解了'同步收集'应该做什么?

其次,我的model.sync('create', model);行有点奇怪。为什么当我在模型本身调用方法时必须传入模型?另外,我手动调用'创建'这显然是错误的。不应该'同步'意识到应该创建还是更新?

而且,不应该'同步'智能足以在任何已从我的集合中删除的模型上调用'删除'?

我猜我应该看看在我的模型上自定义同步方法,但我仍然困惑于我在做什么,这是不寻常的,这将需要我自定义这些同步方法。

我觉得我错过了一个关于同步的重要观点。

+1

骨干考虑模型没有id为新的和调用创建(保存方法)否则调用更新(或补丁)。不,这不是Backbone.Collection的默认行为,我想你误解了Backbone的sync,fetch和save方法(然后阅读文档)。你的一些观点不是主干/客户端,而是服务器端。 –

+0

aha。好吧,据我怀疑,我忽略了一些相当基本的东西,那就是保存方法。我直接跳过同步。所以从我所看到的,保存我认为同步做的工作。同步是用于处理来自服务器的保存请求的响应,以确保该模型在保存后确实在服务器上包含属性。那么collection.sync有什么意义?何时会被解雇? – xanld

+0

立即同步收集(如果您有/ blog /:id /标签或类似的东西)。您的服务器必须支持嵌套关系。 –

回答

0

有关记录,这个问题并没有真正的答案,因为这是一个无效的问题!我误解了'同步'的用途。我现在使用KiT O指出的保存。

谢谢。