保存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

上一篇: Save Backbone.js Model and update entire Collection

下一篇: Automatically save after adding model to collection