我正在寻找一种解决方案,在父模型中加载嵌套的json,最终在屏幕上呈现。 我有一个这种格式的嵌套json:
{
"name":"Hotel-A",
"description":"5 star rating",
"geographicAddress":{
"streetAddress":"343,Market st",
"city":"San Jose",
"state":"CA",
"country":"USA",
"postalCode":"34523"
},
"id":"338a947b-c488-46a9-b68f-640fcda38577"
}
我有一个父模型,它进一步引用了geographicAddress和geographicPoint模型。
它的外观如下:
父模型:
defaults:{
"id" : "",
"name" : "",
"description" : "",
"geographicAddress": new geoAddress(),
}
家长收藏:
addParentModel: function(parent) {
var newParentModel = new this.model();
newParentModel.set({
id: parent.id,
name: parent.name,
description: parent.description,
address:geoAddress.streetAddress,
city:geoAddress.city,
state:geoAddress.state,
postalCode:geoAddress.postalCode
});
地理地址模型:
defaults:{
"streetAddress":"",
"city":"",
"state":"",
"country":"",
"postalCode":""
}
有人可以告诉我一种方法用嵌套的json填充父模型并在html中渲染它。
谢谢。
答案 0 :(得分:2)
我建议覆盖Backbone.Model的parse
函数,以便按照您想要的方式构建数据。来自Backbone文档:
该函数传递原始响应对象,并应返回 属性hash要在模型上设置。默认实现是 一个无操作,只是通过JSON响应。覆盖这个if 您需要使用预先存在的API,或更好的命名空间 响应。
var PlaceModel = Backbone.Model.extend({
defaults: {
"id": "",
"name": "",
"description": "",
"geographicAddress": new AddressModel()
},
parse: function(data) {
return {
id: data.id,
name: data.name,
description: data.description,
geographicAddress: new AddressModel(data.geographicAddress)
};
}
});
我创建了一个更完整的演示,演示了如何使用parse
创建模型,然后在此处渲染集合:https://jsfiddle.net/f8L2z0ba/