解决方案在我的路由中
Myapp.Routes = Backbone.Router.extend({ init: function(){ user = new User(); user.fetch({ user, success: function(response){ user.classlist = new classes(response.attributes.classes); } });
}
});
我从服务器得到了一个序列化的JSON数组,我试图将嵌套的对象放入我的嵌套集合中。
我认为这个答案会帮助我,但是我缺少一些东西。 如何使用Backbone.js从嵌套的JSON构建Collection/Model
我正在尝试用以下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')
返回未定义。
我还尝试通过this.attributes.classes
获取类数组,但也未定义。
------------更新以包括重新初始化--------------------
我正在初始化用户和课程的函数在User路由中,称为re_initialize。我使用此函数获取用户及其班级并存储该对象。
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
,但它未将类添加到集合中。
我无法包含'collection',因为由于某种原因我无法在Backbone中访问它。用户模型在返回到Backbone后包括类数组,我正在尝试将其放入ClassList
集合中。
从JavaScript终端复制的用户模型对象如下所示。
属性: 对象 创建时间: "2012-01-05T16:05:19Z" ID: 63 类别: 数组[3] 0: 对象 创建时间: "2012-01-18T20:53:34Z" ID: 295 教师ID: 63 班级代码: 42 更新时间: "2012-01-18T20:53:34Z" 班级名称: 数学 __proto__: 对象 1: 对象 2: 对象 长度: 3 __proto__: 数组[0]
user.attributes.classes
访问类。 - pedalpete