Reputation: 7136
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
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