Solution in my route
Myapp.Routes = Backbone.Router.extend({ init: function(){ user = new User(); user.fetch({user, success: function(response){ user.classlist = new classes(response.attributes.classes); }); } });
I've got a serialized json array being returned from my server, and I am trying to put the nested objects into my nested collections.
This answer, I thought was going to get me there, but I'm missing something. How to build a Collection/Model from nested JSON with Backbone.js
The json which I am trying to populate my nested model with is
{first_name: "Pete",age: 27, classes: [{class_name: "math", class_code: 42},{class_name: "french", class_code: 18}]}
I create my user model
MyApp.Models.Users = = Backbone.Model.extend({ initialize: function(){ this.classlist = new MyApp.Collections.ClassList(); this.classlist.parent = this; } });
I had tried to follow the example on the other page, and use
this.classlist = new MyApp.Collections.ClassList(this.get('classes')); this.classlist.parent = this;
but this.get('classes')
returns undefined.
I've also tried getting the classes array through this.attributes.classes, but that is also undefined.
------------updated to include re-initialize -------------------- The function where I am initializing the user and classes is in the User routes and is called re-initialize. I use this function to fetch the user and their classes and store the object.
re_initialize: function(id){ user = new MyApp.Models.User(); MyApp.editingClasses.url = 'classes/'+id; MyApp.editingClasses.fetch({ success: function(response){ MyApp.editingClasses.parse(response); } }); new MyApp.Views.ClassesInput(); },
As you can see, I'm calling the parse
explicitly in the success function, but it isn't adding the classes to the collection.
I can't include the 'collection' because for some reason I can't access it in backbone.
the user model, after getting returned to backbone includes the classes array, which I am trying to put into the ClassList
collection.
The user model object copied from the javascript terminal looks like this.
attributes: Object created_at: "2012-01-05T16:05:19Z" id: 63 classes: Array[3] 0: Object created_at: "2012-01-18T20:53:34Z" id: 295 teacher_id: 63 class_code: 42 updated_at: "2012-01-18T20:53:34Z" class_name: math __proto__: Object 1: Object 2: Object length: 3 __proto__: Array[0]