Javascript 主干仅在数据已更改的集合中保存已更改的模型
如果我有一组模型,然后在我的代码中,我会:Javascript 主干仅在数据已更改的集合中保存已更改的模型,javascript,jquery,backbone.js,Javascript,Jquery,Backbone.js,如果我有一组模型,然后在我的代码中,我会: collection[0].set({name: "Joe"}); collection[1].set({username: "abcd"}); collection[10].set({name: "bob"}); 是否有一种方法可以对所有模型执行.save(),但只更新已更改的字段和模型?就好像该集合包含1000多个模型一样,第一次执行获取操作已经占用了大量系统资源,而对1000多个模型执行.save()操作将占用更多…: 如果您只希望将更改的属性
collection[0].set({name: "Joe"});
collection[1].set({username: "abcd"});
collection[10].set({name: "bob"});
是否有一种方法可以对所有模型执行.save()
,但只更新已更改的字段和模型?就好像该集合包含1000多个模型一样,第一次执行获取操作已经占用了大量系统资源,而对1000多个模型执行.save()
操作将占用更多…:
如果您只希望将更改的属性发送到服务器,请调用model.save(attrs,{patch:true})
调用model.save并传递属性集,而不是对属性执行set()
,然后进行保存。您可以在集合中迭代,使用检查模型是否已更改,并发送一个补丁
(或播放以更改该补丁)请求更改的属性。可以使用以下命令检测更改的属性:
伪代码:
collection.each(函数(模型){
if(model.hasChanged())
save(attrs,{patch:true});
//---------------^可以是单个属性、更改属性或其他任何属性
});
旁注:你不应该一次有1000个模型。。。有分页、延迟加载等技术是的,但我不想对我更改的每个模型都这样做。有没有一种方法可以让主干网检测到更改了什么型号,并且只对其执行save()
操作?收集[0]
是否有效。。?因为集合是一个对象,并且模型位于models
属性中。