2011-11-03 95 views
3

我们正在保存一个模型集合,但骨干似乎想要一个接一个地完成这些。这可能是昂贵的,需要一段时间才能完成,这可能会导致如果用户刷新或退出页面中间过程远没有被保存的数据。骨干js批量保存

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

我该怎么做?

代码,不会保存:

_(this.models).each(

      function(guest) { 

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

你能举一个你正在用来执行这个动作的代码的例子吗? – tgriesser

回答

2

我一直在想了一会儿...... REST没有定义多个项目的推动(即我所知道的),所以你会必须写一些定制的东西,使之成为现实。

我认为最好的办法是在后端创建一个自定义路径,即PUT/entities路径,很像现有的GET,它实际上只是一个“索引”。很像现在就返回一个JSON集合这将需要一个JSON集合。

然后,您需要覆盖Backbone.Collection以包含save函数。由于Backbone.sync只有四个动词(创建,更新,删除,读取),所以您需要执行“更新”,但您可能需要编写一些代码,以便将您的集合序列化为JSON集合并放入身体。我希望在Backbone.sync中覆盖一点,或者在您的新Backbone.Collection.save函数中只是定制致电$.ajax

至少,这就是我如何攻击它。 :)

+1

我同意,这是应该做的方式。您还可以使用Backbone.sync,它开箱的,看到这样的代码:http://stackoverflow.com/questions/7975316/how-to-save-a-collection-with-backbone-js/7986982#7986982 – dira

+0

感谢您的支持链接,@dira :) –

+0

迪拉得到它的权利,但权利,有没有其他办法做到这一点,我会庆祝这个问答:■ – iwayneo