骨干js批量保存

时间:2011-11-03 14:53:43

标签: javascript asp.net-mvc backbone.js

我们正在保存一个模型的集合,但骨干似乎想要一个接一个地做这些。这可能很昂贵,需要一段时间才能完成,如果用户刷新或离开页面中间过程,可能会导致数据无法保存。

有没有办法让Backbone将它们作为数组发送出去?

我该怎么做?

执行保存的代码:

_(this.models).each(

            function(guest) {

                if (tid == guest.get('tableId') || guest.get('tableId') == null) {
                    guest.set({ tableId: tid });
                    guest.save();
                }
            }
);

1 个答案:

答案 0 :(得分:2)

我一直在考虑这个问题...... REST没有定义推送多个项目(我知道),所以你必须编写一些自定义的东西来实现它。

我认为最好的方法是在后端创建一个自定义路由PUT/entities路径,就像现有的GET一样真的只是一个“索引”。它需要一个JSON集合,就像GET现在返回一个JSON集合一样。

然后,您需要覆盖Backbone.Collection以包含save功能。由于Backbone.sync只有四个动词(创建,更新,删除,读取),您可能希望进行“更新”,但您可能需要编写一些代码,以便将您的集合序列化为JSON集合,把它放在体内。我希望Backbone.sync中有一些覆盖,或者只是在新的$.ajax功能中自定调用Backbone.Collection.save

至少,这就是我攻击它的方式。 :)