ped*_*ete 3 nested backbone.js
在我的路线解决方案
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构建集合/模型
我试图用我的嵌套模型填充的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')返回undefined.
我也试过通过this.attributes.classes获取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在成功函数中显式调用,但它不是将类添加到集合中.
我不能包含'集合',因为由于某种原因我不能在骨干中访问它.返回骨干后的用户模型包括classes数组,我试图将其放入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]
您可以使用该parse函数预处理服务器响应:
MyApp.Models.Users = Backbone.Model.extend({
parse: function(response) {
var classesJSON = response.classes;
var classesCollection = MyApp.Collections.ClassList(classesJSON);
response.classes = classesCollection;
return response;
}
});
var user = new MyApp.Models.Users();
user.fetch();
// You should now be able to get the classlist with:
user.get('classes');
Run Code Online (Sandbox Code Playgroud)
也就是说,另一个问题中建议的方法也应该有效.可能是在initialize调用函数时,模型尚未填充数据?
例如,如果您正在做:
var user = new MyApp.Models.Users();
Run Code Online (Sandbox Code Playgroud)
它还没有任何属性可以提供给classlist集合.这可能是你的问题吗?
| 归档时间: |
|
| 查看次数: |
5602 次 |
| 最近记录: |