我有一个单页应用程序使用骨干来管理模型集合。
有时这个集合变得非常大,如果用户执行的操作会改变很多,这会导致.save被多次调用。在某些情况下,导致数百个ajax请求同时触发。
骨干网是否可以将这些批处理操作提供给单个请求?或者是否有首选模式可供使用?
感谢您的任何建议。
答案 0 :(得分: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();
}
});
另一种选择是简单地将save()
方法添加到您的集合并委托给Backbone.Sync
var Posts = Backbone.Collection.extend({
...
save: function( options ) {
return Backbone.sync( 'create', this, options );
}
});