Bar*_*den 9 javascript json extjs extjs4
我正在尝试hasMany在ExtJS4 中的关系中加载"嵌套"数据.我的模型看起来像这样:
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'}
}
});
Run Code Online (Sandbox Code Playgroud)
而且EntrypageCriterium:
Ext.define("Entrypage.model.EntrypageCriterium",{
extend: "Ext.data.Model",
fields: ['id','type','title']
});
Run Code Online (Sandbox Code Playgroud)
我像这样加载我的数据:
Entrypage.load("nikon-coolpix",{success:function(record,options,success){
console.log(record);
}});
Run Code Online (Sandbox Code Playgroud)
它加载很好.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"}
]
}]
}
Run Code Online (Sandbox Code Playgroud)
但是,当我尝试record.brands()或类似的东西.它说不存在这样的方法.我认为在映射模型中的数据时会出现问题.
非常感谢任何帮助!
Bar*_*den 17
终于找到了问题.供将来参考:
如果您在ExtJS的新MVC结构中使用包,请在关联中定义链接类的完整路径,如下所示:
hasMany: {model: 'Entrypage.model.EntrypageCriterium', name: 'brands', associationKey:'brands'}
Run Code Online (Sandbox Code Playgroud)