简而言之,我希望对其他集合和模型进行骨干深度收集
结构就像这样
[{
mainCategory: "Something"
subCategories: [
{
category: "SomethgingElse",
labs: [
{
id: 1,
title: "Title",
description : "Lorem ipsum dolor sit amet"
availablelanguages: ["fr","en"]
},
{
id: 2,
title: "Another Title",
description : "Lorem ipsum dolor sit amet",
availablelanguages: ["fr","en"]
}]
},
{
category: "Testing",
labs: [
{
id: 1,
title: "ZZZZ",
description : "Lorem ipsum dolor sit amet"
availablelanguages: ["ar","en"]
},
{
id: 2,
title: "VVVVV",
description : "Lorem ipsum dolor sit amet",
availablelanguages: ["ar","en"]
}]
}
]
}]
我定义了一些集合和模型,如下所示
var Item = Backbone.Model.extend({
defaults: {
title : '',
description: '',
availableLangagues : []
}
});
var Items = Backbone.Collection.extend({
model: Item
});
var Category = Backbone.Model.extend({
defaults: {
categoryName: '',
labsList: new Items()
}
});
var Categories = Backbone.Collection.extend({
model: Category
});
var TopCategory = Backbone.Model.extend({
defaults: {
topCategory: "",
categories: new Categories()
}
});
var TopCategories = Backbone.Collection.extend({
model: TopCategory
});
我的问题在这里我想在fetch
上呼叫TopicCategories
我希望填充所有内容,fetch
将返回JSON
,就像示例中传递的一样,但是如果我在fetch
上调用TopCategories
它将返回数据,但数组将只是普通的JavaScript数组而不是我想要的默认主干集合
答案 0 :(得分:2)
您要做的是利用您的顶级模特的parse()
功能。在这个经过修改的解析中,您所做的是从响应中梳理出不同的对象/数组,并将它们转换为您想要的集合。示例:TopCategory模型中的parse()
。
parse: function(response) {
if (response.subCategories){
if (!this.subCategories) {
this.subCategories = new Categories(response.subCategories);
} else {
this.subCategories.reset(response.subCategories);
}
delete response.subCategories;
}
return response;
}
您将在每个父模型的解析定义中执行此模式,该模型具有您要解析的某种主干集合。
此链接可能会为您提供更多有关如何运作的建议。