dchhetri
dchhetri

Reputation: 7136

Saving Backbone model and collection to JSON string

I'm having problem saving Backbone.Model or Backbone.Collection objects to local storage. The problem is that when it saves, only the attributes gets saved and I do not want that. I'm actually using the backbone-localstorage thats provided in their sample TODO demo.

This is their save function

save: function() {          
    localStorage.setItem(this.name, JSON.stringify(this.data));
}

When I look at what JSON.stringify(this.data) returns, I see only the models or the collection's attributes gets sets. Is there a way to specify that I want to save the whole state the model and collection is in, not just the attributes?

Upvotes: 7

Views: 14232

Answers (1)

Edward M Smith
Edward M Smith

Reputation: 10627

Override the Model.toJSON or Collection.toJSON to return the data you want serialized.

The default Model.toJSON just returns the attributes:

toJSON : function() {
  return _.clone(this.attributes);
}

the Collection's toJSON utilizes the Model's toJSON:

toJSON : function() {
  return this.map(function(model){ return model.toJSON(); });
}

Upvotes: 12

Related Questions