3

在我的应用程序中,用户创建了一个包含一堆模型的集合。因为我不想向服务器发出大量请求,所以我创建了一个自定义函数,将这些模型批量保存到服务器。然后服务器响应所有模型,包括它们的 id,然后将其设置为各种模型。到目前为止一切正常。

我现在遇到的问题是 Backbone 不知道此时所有模型都与服务器同步。因此,稍后在应用程序中,当我在每个模型上调用 model.save() 时,它会再次将每个模型发送到服务器(这应该只是自批处理操作以来更改的模型)。我怎样才能让 Backbone 知道所有模型都已同步?我正在查看 'changed' 和 'hasChanged' 属性,但不太确定是否应该操纵这些(我猜不是)。

4

2 回答 2

7

Backbone 不包括跟踪自上次与服务器同步以来更改的属性的功能。

自上次与服务器同步以来,changedhasChanged没有处理更改的属性。

您必须创建自己的机制来跟踪模型的状态:

  1. 每个模型都应该有一个hasChangedSinceLastSync标志。
  2. 每个模型都应绑定 (.on) 到它自己的change事件并将标志设置为 true。
  3. 一旦从服务器返回数据(用于读取/创建/更新),覆盖该sync方法并将标志设置为 false。
于 2012-12-01T16:47:28.017 回答
0

如果您的模型的属性未设置/为空,Backbone 将HTTP POST创建您的模型服务器端。id

所以你应该做的是id在服务器返回它们时手动设置这个属性。

此外,如果您的id属性不是id,您可以告诉骨干这是另一个属性。

cf,文档:

于 2012-12-01T16:45:45.707 回答