javascript - Backbone : Batch save models in single request?

标签 javascript ajax backbone.js backbone-events backbone.js-collections

我有一个单页面应用程序,使用主干来管理模型集合。

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

主干是否提供任何方法将此类操作批量处理为单个请求?或者有首选的模式可以使用吗?

感谢您的建议。

最佳答案

没有内置方法可以对 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() 方法添加到您的集合中并委托(delegate)给 Backbone.Sync

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

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

关于javascript - Backbone : Batch save models in single request?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28095530/

相关文章:

JavaScript Jquery 停止每个函数,阻止按钮

javascript - Expressjs 检查重新加载页面上的 header

javascript - 网站响应式导航栏中的问题

javascript - Angular 模块不适用于 Gulp Babel

backbone.js - Jasmine 测试使用预编译 Handlebars 模板的主干 View

javascript - 单击元素时一种模式呈现不同的模板

javascript - 主干.JS : View is not a contructor

javascript - 我如何检查是否在 JS 中单击了多个 div?

javascript - 在循环中定义ajax回调覆盖

javascript - 使用 jQuery 选择出现多次的类