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

Backbone: Batch save models in single request?

我有一个使用 backbone 管理模型集合的单页应用程序。

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

backbone 是否提供任何方法将此类批量操作合并到单个请求中?或者是否有首选模式可供使用?

感谢任何建议。

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();
  }
});

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

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

  save: function( options ) {
    return Backbone.sync( 'create', this, options );
  }
});