我正在尝试从我的模型商店访问以下JSON。我访问根(名称和地址)没有问题,但我无法访问财务(NetWorth或收入)中的任何内容。我已经验证了下面的JSON是从服务器返回的。
我知道这必须非常容易,但我见过的每个例子都展示了如何访问1对多的关系。我的模型是1到1.人 - >财务。现在我没有任何关联设置,因为我不知道如何设置1对1的关系。我已经尝试过关联,我尝试过belongsTo,我已经在我的itemTPL中尝试过Financials.NetWorth。什么都没有。
有人可以给我看灯吗?
从服务器返回的JSON
[{
"PersonName": "John Smith",
"Address": "123 main street",
"Financials":
[{
"NetWorth": "$500,000",
"Income":"$67,000"
}]
}]
我注册了我的模特。
Ext.regModel('Person', {
fields: [
{name: 'Name', type:'string'},
{name: 'Address', type: 'string'},
],
});
Ext.regModel('Financials',{
fields: [
{name: 'NetWorth', type:'string'},
{name: 'Income', type: 'string'},
],
});
并注册了商店
var commStore = new Ext.data.Store({
model: 'Person',
proxy: {
type: 'ajax',
url : 'Business/GetData',
reader: {
type: 'json',
}
},
autoLoad:false,
});
并在列表中显示
var commList = new Ext.List({
fullscreen: false,
itemTpl : '<div>{PersonName}</div><div>{Business.NetWorth}</div>',
store: commStore,
height:500,
width:"100%",
});
非常感谢任何帮助。
答案 0 :(得分:1)
自己也是初学者,但看起来似乎有帮助(没有用你的代码测试)
仅限模特:
Ext.regModel('Person', {
fields: [
{name: 'Name', type:'string'},
{name: 'Address', type: 'string'},
{name: 'NetWorth', type:'string', mapping 'Financials.NetWorth'},
{name: 'Income', type: 'string', mapping 'Financials.Income'},
],
});
并在模板代码中引用名称
itemTpl : '<div>{PersonName}</div><div>{Business.NetWorth}</div>',
变为
itemTpl : '<div>{PersonName}</div><div>{NetWorth}</div>',
答案 1 :(得分:0)
你说你的关系是1对1,但是你的JSON数据返回一个数组(有一个项目,但仍然是一个数组,因为你使用“[]”括号)进行财务。 这意味着Person应该成为这样的东西:
Ext.regModel('Person', {
fields: [
{name: 'Name', type:'string'},
{name: 'Address', type: 'string'},
],
hasMany: [
{name: 'person', model: 'Person'}
]
});