我脑子里有这个模型结构:
var app = app || {};
// Caratteristica
app.Attribute = Backbone.Model.extend({
defaults: {
name: '',
selected: false
}
});
app.Attributes = Backbone.Collection.extend({
model: app.Attribute
});
// Tipo Caratteristica
app.AttributeCategory = Backbone.Model.extend({
defaults: {
name: '',
attributes: new app.Attributes()
}
});
app.AttributeCategories = Backbone.Collection.extend({
model: app.AttributeCategory,
url: '/ajax/attributes.cfm'
});
我在'/ ajax / attributes.cfm'中的API会给我一个这样的回复:
[
{
"id": "1",
"name": "Type1",
"attributes": [
{
"id": "1",
"name": "Attribute1"
},
{
"id": "2",
"name": "Attribute2"
},
{
"id": "3",
"name": "Attribute3"
}
]
},
{
"id": "2",
"name": "Type2",
"attributes": [
{
"id": "1234",
"name": "Attribute1234"
},
{
"id": "2567",
"name": "Attribute2567"
}
]
}
]
我的问题是:将这个json数据正确解析到我的嵌套数据结构中吗? 我的意思是我希望最终在我的 app.AttributeCategories 集合中有两个 app.AttributeCategory 项目。然后,这两个项目中的每一个都必须使用相应的 app.Attributes 集合填充其属性属性。
如果答案为否,我将如何覆盖 parse()函数来实现该结果?
答案 0 :(得分:1)
我是这样做的:
// Tipo Caratteristica
app.AttributeCategory = Backbone.Model.extend({
defaults: {
name: ''
},
initialize: function(options) {
this.set('attributes', new app.Attributes(options.attributes));
Backbone.Model.prototype.apply(this, arguments);
}
});
但最好使用RationalModel来建立模型之间的关系
答案 1 :(得分:0)
您可以在AttributeCategory模型中的initialize方法中创建集合,如下所示:
app.AttributeCategory = Backbone.Model.extend({
...
initialize: function () {
this.set('attributes', new app.Attributes(this.get('attributes')));
}
});