Решение
по моему маршруту
Myapp.Routes = Backbone.Router.extend({
init: function(){
user = new User();
user.fetch({user,
success: function(response){
user.classlist = new classes(response.attributes.classes);
});
}
});
С моего сервера возвращается сериализованный массив json, и я пытаюсь поместить вложенные объекты в мои вложенные коллекции.
Этот ответ, я думал, собирался привести меня туда, но я что-то упустил.
Как создать коллекцию / модель из вложенного JSON с Backbone.js
JSON, которым я пытаюсь заполнить мою вложенную модель:
{first_name: "Pete",age: 27, classes: [{class_name: "math", class_code: 42},{class_name: "french", class_code: 18}]}
Я создаю свою пользовательскую модель
MyApp.Models.Users = = Backbone.Model.extend({
initialize: function(){
this.classlist = new MyApp.Collections.ClassList();
this.classlist.parent = this;
}
});
Я пытался последовать примеру на другой странице и использовать
this.classlist = new MyApp.Collections.ClassList(this.get('classes'));
this.classlist.parent = this;
но this.get('classes')
возвращает неопределенное значение.
Я также пытался получить массив classes через this.attributes.classes, но это также не определено.
------------ обновлено для включения повторной инициализации --------------------
Функция, в которой я инициализирую пользователя и классы, находится в маршрутах пользователя и называется повторной инициализацией. Я использую эту функцию, чтобы выбрать пользователя и его классы и сохранить объект.
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();
},
Как видите, я вызываю parse
явно в функции успеха, но она не добавляет классы в коллекцию.
Я не могу включить «коллекцию», потому что по какой-то причине я не могу получить к ней доступ в магистрали.
Пользовательская модель после возвращения в магистраль включает в себя массив классов, который я пытаюсь поместить в коллекцию ClassList
.
Объект пользовательской модели, скопированный из терминала javascript, выглядит следующим образом.
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]