Javascript ExtJS 4.2.0在网格中加载嵌套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",

我有一个返回以下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":[

         ]
      }
   ]
}
现在我想把
名称
状态
信息
加载到网格中。 因此,我首先定义了我的数据模型:

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”:[“十”,“二”,“八”,“四”]}}