我们正在保存一个模型的集合,但骨干似乎想要一个接一个地做这些。这可能很昂贵,需要一段时间才能完成,如果用户刷新或离开页面中间过程,可能会导致数据无法保存。
有没有办法让Backbone将它们作为数组发送出去?
我该怎么做?
执行保存的代码:
_(this.models).each(
function(guest) {
if (tid == guest.get('tableId') || guest.get('tableId') == null) {
guest.set({ tableId: tid });
guest.save();
}
}
);
答案 0 :(得分:2)
我一直在考虑这个问题...... REST没有定义推送多个项目(我知道),所以你必须编写一些自定义的东西来实现它。
我认为最好的方法是在后端创建一个自定义路由PUT
到/entities
路径,就像现有的GET
一样真的只是一个“索引”。它需要一个JSON集合,就像GET现在返回一个JSON集合一样。
然后,您需要覆盖Backbone.Collection
以包含save
功能。由于Backbone.sync
只有四个动词(创建,更新,删除,读取),您可能希望进行“更新”,但您可能需要编写一些代码,以便将您的集合序列化为JSON集合,把它放在体内。我希望Backbone.sync
中有一些覆盖,或者只是在新的$.ajax
功能中自定调用Backbone.Collection.save
。
至少,这就是我攻击它的方式。 :)