【问题标题】:backbone js batching saves主干js批处理保存
【发布时间】:2011-11-03 14:53:42
【问题描述】:

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

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

我该怎么做?

进行保存的代码:

_(this.models).each(

            function(guest) {

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

【问题讨论】:

  • 您能否举例说明您当前用于执行此操作的代码?

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


【解决方案1】:

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

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

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

至少,我会这样攻击它。 :)

【讨论】:

  • 我同意,这就是这样做的方式。您可以使用 Backbone.sync,它开箱即用,请参阅此代码:stackoverflow.com/questions/7975316/…
  • 感谢支持链接,@dira :)
  • dira 是对的,但我会将此 q 标记为正确,因为没有其他方法可以做到这一点:s
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-06-26
  • 2011-08-14
  • 2015-08-05
  • 1970-01-01
  • 1970-01-01
  • 2011-08-23
  • 2014-01-13
相关资源
最近更新 更多