2

我想将 JSON 中的嵌套数据添加到树形面板中。我的问题是树被列出的 JSON 记录数(分区数,在示例中为 1)没有任何文本。但是当我选择一个孩子时,它显示Uncaught TypeError: Cannot read property 'internalId' of undefined error。这是我到目前为止所尝试的。

JSON 文件 (schemesInfo.json)。

{
"divisions":[
{"name": "division1","id": "div1","subdivisions":[
    {"name": "Sub1Div1","id": "div1sub1","schemes":[
        {"name": "Scheme1","id": "scheme1"},
        {"name": "Scheme2","id": "scheme2"}]},
    {"name": "Sub2Div1","id": "div1sub2","schemes":[
        {"name": "Scheme3","id": "scheme3"}]}

]}]
}

模型:(方案模型.js)

   Ext.define('GridApp.model.schemesmodel',{
    extend: 'Ext.data.Model',
    fields: ['name','id'],
    proxy: {
        type: 'ajax',
        api: {
            read: 'data/schemesInfo.json'
        },
        reader: {
            type: 'json',
            root: 'divisions'
        }
    }
    });

商店:(schemesstore.js)

    Ext.define('GridApp.store.schemesstore',{
    extend: 'Ext.data.TreeStore',
    model: 'GridApp.model.schemesmodel',
    autoLoad: true,

    listeners: {
        load:function(){
            console.log('Schemes Data store loaded');
        }
    },
    root: {
        text: "Divisions",
        expanded: true,
        id: 'NULL'
//      children: [
//                 {
//                     text:['name'],
////                       id: 'divsionnameid',
////                       leaf: true
//                 }]
    }
});

我对 Extjs 4 很陌生。让我知道我哪里出错了。有关此的任何要点都将非常有帮助。

根据与@Izhaki 的讨论更新了问题。

4

1 回答 1

3

在您的 JSON 中表示子项的属性必须包含并匹配root您的阅读器的属性。正如你的,divisions你的 JSON 应该是:

{
   "divisions":[
      {
         "name":"division1",
         "id":"div1",
         "divisions":[
            {
               "name":"Sub1Div1",
               "id":"div1sub1",
               "divisions":[
                  {
                     "name":"Scheme1",
                     "id":"scheme1"
                  },
                  {
                     "name":"Scheme2",
                     "id":"scheme2"
                  }
               ]
            },
            {
               "name":"Sub2Div1",
               "id":"div1sub2",
               "divisions":[
                  {
                     "name":"Scheme3",
                     "id":"scheme3"
                  }
               ]
            }
         ]
      }
   ]
}

另外,不要忘记displayField: 'name'在您的 TreePanel 配置中。

于 2012-08-20T16:30:44.303 回答