1
votes

How i can refresh model's attributes when invoke save() I am using backbone and backbone relational. Have the following code:

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();
  },

When pass callback success, the parameters "model" has ald attributes (before save), resp is holding updated attributes. How i can update attributes in a model?

model.set(resp) doesn' help me model.set(JSON.stringify) doesn't help me

UPD1: I use Backbone RelationModel cause have nested models. Nested models doesn't refresh when success callback invokes. I guess because RelationModel using Backbone.Store.

UPD2: For me works only this:

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

I know it's ugly, but it's working )

1

1 Answers

2
votes

Normally you don't have to do this! Backbone automatically parses the response if a save() command, as you can see here: http://documentcloud.github.com/backbone/docs/backbone.html#section-41

If your response data differs from the default assumed backbone data structure you should take a look at the Backbone.Model#parse method and maybe overwrite it (it's a very simple method).