Javascript ExtJS 4.2.0在网格中加载嵌套JSON数据
我有一个返回以下JSON的脚本Javascript ExtJS 4.2.0在网格中加载嵌套JSON数据,javascript,json,extjs,grid,Javascript,Json,Extjs,Grid,我有一个返回以下JSON的脚本 { "success":true, "code":0, "message":"works", "data":[ { "name":"connection1", "status":1, "info":[ { "info1":"abc", "info2":"def",
{
"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":[
]
}
]
}
现在我想把名称
、状态
和信息
加载到网格中。
因此,我首先定义了我的数据模型:
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' }
到我的数据模型,然后到我的控制台。调试(存储)
日志model:undefined
有人知道我的错误在哪里吗?非常感谢您的帮助。下面是一个演示工作代码的示例
获取相应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'
}
}
});
数据模型:
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'
}
}
});
商店:
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());
})
嗨,Weeksdev,谢谢你的回答。你能看到下面的json结构并帮我加载相同的数据吗?{“success”:true,“code”:0,“message”:“works”,“data”:[{“name”:“connection1”,“status”:1,“info1”:[“一”,“二”,“三”,“四”],“info2”:[“十”,“二”,“八”,“四”]}}