如何在使用骨干调用save时刷新模型的属性

时间:2011-08-19 12:15:03

标签: javascript ajax backbone.js

调用save()时如何刷新模型的属性 我正在使用骨干和骨干关系。请准备以下代码:

saveParams: function(event){
    var self = this;
    this.model.save({}, {
      success: function(model, resp, xhr){
        model = ...

      },
      error: function(model, resp){
        alert(JSON.stringify(resp));
      }
    });
    $(this.el).effect("highlight", {}, 1000);
    event.preventDefault();
  },

当传递回调成功时,参数“model”具有ald属性(保存前),resp保持更新属性。我如何更新模型中的属性?

model.set(resp)没有帮助我 model.set(JSON.stringify)对我没有帮助

UPD1:我使用Backbone RelationModel导致嵌套模型。成功回调调用时,嵌套模型不会刷新。我猜因为RelationModel使用Backbone.Store。

UPD2:对我来说只有这个:

model.clear()
model.set(resp);
model.change();

我知道这很难看,但它有效)

1 个答案:

答案 0 :(得分:2)

通常你不必这样做! 如果有save()命令,Backbone会自动解析响应,如下所示: http://documentcloud.github.com/backbone/docs/backbone.html#section-41

如果您的响应数据与默认的假定主干数据结构不同,您应该查看Backbone.Model#parse方法并覆盖它(这是一种非常简单的方法)。