我有一个返回以下JSON
的脚本{
"success":true,
"code":0,
"message":"works",
"data":[
{
"name":"connection1",
"status":1,
"info":[
{
"info1":"abc",
"info2":"def",
"info3":"123"
},
{
"info1":"ghi",
"info2":"jkl",
"info3":"456"
}
]
},
{
"name":"connection2",
"status":1,
"info":[
{
"info1":"mno",
"info2":"pqr",
"info3":"789"
}
]
},
{
"name":"connection3",
"status":1,
"info":[
{
"info1":"stu",
"info2":"vwx",
"info3":"123"
}
]
},
{
"name":"connection4",
"status":0,
"info":[
]
},
{
"name":"connection5",
"status":0,
"info":[
]
}
]
}
现在我希望将name
,status
和info's
加载到网格中。
所以我首先定义了我的数据模型:
Ext.define("Data", {
extend: 'Ext.data.Model',
fields: ['name', 'status']
});
然后是我的信息模型:
Ext.define("Info", {
extend: 'Ext.data.Model',
fields: [
'info1',
'info2',
'info3'
],
belongsTo: 'Data'
});
并设置我的商店:
var store = Ext.create('Ext.data.Store', {
model: "Data",
autoLoad: true,
proxy: {
type: 'ajax',
url: 'valid/URL.php'
},
reader: {
type: 'json',
root: 'data'
}
});
但我的console.debug(store)
会记录data: items: Array[0]
。
我试着添加
hasMany: { model: 'Info', name: 'info' }
到我的数据模型,然后我的console.debug(store)
日志model: undefined
。
有谁知道我的错误在哪里?任何帮助表示赞赏。
答案 0 :(得分:2)
这是展示工作代码的fiddle
执行获取相应hasMany存储的方法是info()
:
store.data.items[0].info()
此外,在您的示例中,阅读器放置不当。它应该在代理定义中。复制/粘贴代码时,我不确定这只是一个错误。这是相应的型号和商店:
信息模型:
Ext.define("Info", {
extend: 'Ext.data.Model',
fields: ['info1', 'info2', 'info3'],
belongsTo:'Data'
});
数据模型:
Ext.define("Data", {
extend: 'Ext.data.Model',
fields: ['name', 'status'],
hasMany:{model:'Info',name:'info'}
});
商品强>
var store = Ext.create('Ext.data.Store', {
model: "Data",
autoLoad: true,
proxy: {
type: 'ajax',
url: 'data1.json',
reader: {
type: 'json',
root: 'data'
}
}
});
加载后的演示日志:
store.on('load', function() {
console.log(store.data.items[0].info());
})