Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

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?

like image 805
dchhetri Avatar asked Jul 19 '11 20:07

dchhetri


1 Answers

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(); });
}
like image 145
Edward M Smith Avatar answered Sep 23 '22 21:09

Edward M Smith