在我的应用中,用户使用一堆模型创建一个集合。由于我不想向服务器发出大量请求,因此我创建了一个自定义函数,将这些模型批量保存到服务器。然后服务器响应所有模型,包括它们的id,然后将其设置为各种模型。到目前为止一切运作良好。
我现在遇到的问题是Backbone不知道此时所有型号都与服务器同步。因此,在应用程序的稍后阶段,当我在每个模型上调用model.save()时,它会再次将每个模型发送到服务器(这应该只是自批处理操作以来更改的模型)。我怎么能让Backbone知道所有型号都已同步?我正在查看'已更改'和'hasChanged'属性,但我不确定是否应该操纵这些(我猜不是)。
答案 0 :(得分:7)
Backbone不包括自上次与服务器同步后跟踪已更改属性的功能。
自上次与服务器同步以来,changed
和hasChanged
未处理已更改的属性。
您必须创建自己的机制来跟踪模型的状态:
hasChangedSinceLastSync
标志。change
事件,并将标志设置为true。sync
方法,并在从服务器返回数据后将标志设置为false(用于读取/创建/更新)。答案 1 :(得分:0)
如果模型的HTTP POST
属性未设置/为null,Backbone将创建id
来创建模型服务器端。
所以你应该做的是在服务器返回时手动设置这个id
属性。
另外,如果您的id
属性不是id
,您可以告诉骨干这是另一个属性。
Cf,文档:
save()
模型时,参考表格下正在调用的同步方法:http://backbonejs.org/#Sync