Backbone:在单个请求中批量保存模型?

Chr*_*ris 2 javascript ajax backbone.js backbone-events backbone.js-collections

我有一个单页应用程序使用骨干来管理模型集合.

有时这个集合变得非常大,如果用户执行的操作会改变很多,这会导致.save被多次调用.在某些情况下,导致数百个ajax请求同时触发.

骨干网是否为这样的批量操作提供了单一的请求?或者是否有首选模式可供使用?

谢谢你的建议.

Bar*_*cha 5

Backbone.Collection没有内置的批处理操作方法.要使用的常见模式是将集合包装在Backbone.Model中,并简单地覆盖该toJSON方法.然后,您可以像处理任何其他Backbone.Model一样处理此问题并简单地调用save().

var Post = Backbone.Model.extend({
...
});

var Posts = Backbone.Collection.extend({
  model: Post,
  ...
});

var PostsList = Backbone.Model.extend({
  url: '/path/for/bulk/operations',

  toJSON: function() {
    // the model in this case is the Posts collection
    return this.model.toJSON();
  }
});
Run Code Online (Sandbox Code Playgroud)

另一个选择是简单地save()向您的集合添加一个方法并委托给Backbone.Sync

var Posts = Backbone.Collection.extend({
  ...

  save: function( options ) {
    return Backbone.sync( 'create', this, options );
  }
});
Run Code Online (Sandbox Code Playgroud)