保存Backbone.js模型并更新整个集合
我希望能够在骨干模型上调用save()并让后端返回此模型的整个集合,而不仅仅返回模型的已更改属性。 然后我会喜欢骨干更新整个返回的集合。 用例如下:
用户有多个地址,并可以从此集合中选择送货地址。 如果她从集合中选择不同的送货地址,则应将之前的送货地址更新为“另一个普通地址”状态。 为此,整个集合必须更新,而不是仅更改模型。
这在backbone.js中是否有可能?
提前感谢!
绑定到集合的模型包含作为属性的集合父级。 另外,既然你返回了一个模型列表,我们可以假定它总是在一个列表中。
mymodel = Backbone.Model.extend({
parse: function (data) {
if(this.collection && typeof(data) === 'array') {
this.collection.reset(data);
}
return data;
}
});
我不认为在这里需要超越同步或打破回报的预期。
这会更简单,我想重写save
在模型上的东西,如下所示:
save: function (key, value, options) {
var p = Model.prototype.save.call(this, key, value, options),
self=this;
if (this.collection) {
p.done(function () { self.collection.fetch(); });
}
return p;
}
这将使用正常save
获得其承诺来save
,然后如果保存成功并且模型是集合的一部分,它将从服务器获取集合。
另一种方法是绑定到模型的change
事件,检查它是否属于集合和提取,但是这也会发生在set
。
是的,这是可能的。 您需要覆盖模型上的sync
功能
MyModel = Backbone.Model.extend({
sync: function(method, model) {
if (method === 'create') {
//perform save logic and update the model's collection
} else if (method === 'update') {
//perform save logic and update the model's collection
} else if (method === 'read') {
...
} else if (method === 'destroy') {
...
}
}
});
查看Backbone.sync函数以获取更多信息。
链接地址: http://www.djcxy.com/p/67135.html