backbone.js - 使用嵌套的 json 填充嵌套集合

标签 backbone.js nested

解决方案
在我的路线

Myapp.Routes = Backbone.Router.extend({
初始化:函数(){
用户 = 新用户();
user.fetch({用户,
成功:功能(响应){
user.classlist = 新类(response.attributes.classes);
});

}

});

我有一个从我的服务器返回的序列化 json 数组,我正在尝试将嵌套对象放入我的嵌套集合中。

这个答案,我以为会让我到达那里,但我错过了一些东西。
How to build a Collection/Model from nested JSON with 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({

初始化:函数(){
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 获取类数组,但这也是未定义的。

------------更新以包括重新初始化--------------------
我初始化用户和类的函数位于用户路由中,称为重新初始化。我使用这个函数来获取用户和他们的类并存储对象。

重新初始化:函数(ID){
user = new MyApp.Models.User();
MyApp.editingClasses.url = 'classes/'+id;
MyApp.editingClasses.fetch({
成功:功能(响应){
MyApp.editingClasses.parse(响应);
}
});

新的 MyApp.Views.ClassesInput();
},

如您所见,我正在调用 parse在成功函数中明确显示,但它没有将类添加到集合中。

我不能包含“集合”,因为出于某种原因我无法在主干中访问它。
返回到主干后的用户模型包括类数组,我试图将其放入 ClassList收藏。

从 javascript 终端复制的用户模型对象如下所示。

属性:对象
created_at: "2012-01-05T16:05:19Z"
编号:63
类:数组[3]
0:对象
created_at: "2012-01-18T20:53:34Z"
编号:295
教师 ID:63
类代码:42
更新时间:“2012-01-18T20:53:34Z”
class_name:数学
__proto__:对象
1:对象
2:对象
长度:3
__proto__:数组[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');

也就是说,另一个问题中建议的方法也应该有效。可能是当您的 initialize函数被调用,模型还没有填充数据?

例如,如果您正在执行以下操作:
var user = new MyApp.Models.Users();

它不会有任何属性可以提供给类列表集合。那会是你的问题吗?

关于backbone.js - 使用嵌套的 json 填充嵌套集合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8884731/

相关文章:

r - 从嵌套列表中的所有矩阵中提取相同的列

backbone.js - Marionette `close()` 或 `empty()`

javascript - Backbone.js 和 Django Rest Framework 注册和身份验证

javascript - 如何处理主干js中特定目标的点击事件

javascript - 在 Backbone.js View 中多次引用 div

javascript - Angular 4嵌套formArray找不到路径: 'segmentRows3 -> 1 -> segmentId3' 的控件

javascript - 自定义元素未设置/获取属性

redirect - 捕获 302 错误,然后在backbone.js 同步方法重写中重定向

Django Rest Framework - 嵌套用户中的用户配置文件

jquery - jqgrid嵌套子网格第四级子网格总是返回子网格的第一个rowid