Javascript 主干模型同步状态
在我的应用程序中,用户使用一组模型创建一个集合。由于我不想向服务器发出大量请求,因此我创建了一个自定义函数,将这些模型批量保存到服务器。然后,服务器使用所有模型(包括它们的id)进行响应,然后将其设置为各种模型。到目前为止一切顺利Javascript 主干模型同步状态,javascript,rest,backbone.js,Javascript,Rest,Backbone.js,在我的应用程序中,用户使用一组模型创建一个集合。由于我不想向服务器发出大量请求,因此我创建了一个自定义函数,将这些模型批量保存到服务器。然后,服务器使用所有模型(包括它们的id)进行响应,然后将其设置为各种模型。到目前为止一切顺利 我现在遇到的问题是主干网不知道此时所有模型都与服务器同步。因此,在应用程序的稍后阶段,当我对每个模型调用model.save()时,它会再次将每个模型发送到服务器(应该是自批处理操作以来更改的模型)。我如何让主干网知道所有模型都已同步?我正在查看'changed'和'
我现在遇到的问题是主干网不知道此时所有模型都与服务器同步。因此,在应用程序的稍后阶段,当我对每个模型调用model.save()时,它会再次将每个模型发送到服务器(应该是自批处理操作以来更改的模型)。我如何让主干网知道所有模型都已同步?我正在查看'changed'和'hasChanged'属性,但不确定是否应该操作这些属性(我想不是)。如果模型的
id
属性未设置/为空,主干网将创建HTTP POST
,以创建模型服务器端
因此,您应该做的是在服务器返回属性时手动设置该id
属性
另外,如果您的id
属性不是id
,您可以告诉主干网这是另一个属性
Cf,文档:
- 手动设置属性:
- 模型的id属性:
- 当您
a model时,对图纸下调用的同步方法的引用:save()
changed
和hasChanged
未处理更改的属性
您必须创建自己的机制来跟踪模型的状态:
hasChangedSinceLastSync
标志change
事件,并将标志设置为truesync
方法并将标志设置为false你能提供一个如何实现步骤3的例子吗?这里有一个完整的模型来实现这个想法:要点中有一个错误:sync()应该返回:“return Backbone.sync(方法,模型,选项);”而不是“Backbone.sync(方法,模型,选项);”