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 );
}
});
我有一个使用 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 );
}
});