我正在尝试在ExtJS4中以hasMany
关系加载'嵌套'数据。
我的模型看起来像这样:
Ext.define("Entrypage.model.Entrypage",{
extend: "Ext.data.Model",
fields: ['id','title','urlkey','text','picture','keywords', 'searchterms','description','critriamodus'],
hasMany: {model: 'EntrypageCriterium',name:'brands'},
proxy: {
type: 'ajax',
url: '/Admin/extjson/entrypages',
reader: {type:'json', root:'entrypages'}
}
});
EntrypageCriterium
:
Ext.define("Entrypage.model.EntrypageCriterium",{
extend: "Ext.data.Model",
fields: ['id','type','title']
});
我像这样加载我的数据:
Entrypage.load("nikon-coolpix",{success:function(record,options,success){
console.log(record);
}});
加载很好。 Json回复了这个:
{
"success": true,
"entrypages":[{
"id":"1",
"urlkey":"nikon-coolpix",
"title":"Nikon Coolpix",
"text":"Some blahblah about Nikon",
"keywords":"nikon,coolpix,digitale,camera",
"description":"Nikon Coolpix camera's",
"picture":"Nikon Coolpix camera's",
"searchterms":"nikon coolpix",
"language":"nl",
"brands":[
{"id":27038,"title":"Nikon","type":"brand"}
]
}]
}
但是当我尝试record.brands()
或类似的事情时。它说不存在这样的方法。
我认为在模型中映射数据时会出现问题。
非常感谢任何帮助!
答案 0 :(得分:17)
如果您在ExtJS的新MVC结构中使用包,请在关联中定义链接类的完整路径,如下所示:
hasMany: {model: 'Entrypage.model.EntrypageCriterium', name: 'brands', associationKey:'brands'}
答案 1 :(得分:3)
您需要在hasMany关联中设置associationKey属性,因此它知道要使用哪个json属性。
hasMany: {model: 'EntrypageCriterium',name:'brands', associationKey:'brands'}
请参阅此处的“加载嵌套数据”部分:
http://docs.sencha.com/ext-js/4-0/#!/api/Ext.data.reader.Reader