7
votes

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?

1

1 Answers

12
votes

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