我使用Backbone.js,我有一组模型。检索此集合并显示在前端。在前端,我希望用户删除并添加新模型到该集合。
当用户完成并点击"保存"时,我希望更新整个集合。这意味着当点击' save'时,会同步(以某种方式)集合。保存添加的模型,删除删除的模型。
如果我通过删除和添加模型来操作集合,然后使用ex:
this.collection.sync()
它会删除并添加模型吗?
答案 0 :(得分:0)
至少有两种方法可以实现这一目标。
添加/更新模型时,请使用.save
直接保存模型,删除模型后,请在其上调用.destroy
。
该集合还有一个.create
function,可以将新模型添加到其中并同时保存。
最好在一个请求中完成所有事情。
并非总是如此。集合可能很大,而且变化相当小,因此每次与服务器交换100个对象,而不是在列表中添加,删除或更新模型的X个小请求。
<强>赞成强>
<强>缺点强>
models
数组放入模型收藏不是要保存的。相反,将集合的models
放入与API端点通信的模型中。此端点应该期望具有数组字段的对象,该字段可用于替换集合服务器端。
var CollectionModel = Backbone.Model.extend({
urlRoot: "collection/endpoint/"
});
var myModel = new CollectionModel();
// ...sometime later...
myModel.save({
arrayAttribute: yourCollection.toJSON()
}, { patch: true });
<强>赞成强>
<强>缺点强>
Collection's .sync
function只是Backbone.sync
的代理,没有正确的参数就什么都不做。它仅在.fetch
(line 1055)内部使用,并不打算直接使用,除非添加自定义行为。