2

JSONからツリーパネルにネストされたデータを追加したいと思います。私の問題は、テキストなしでJSONレコードの数(分割数、ここでは例では1)のツリーがリストされていることです。しかし、子を選択すると、Uncaught TypeErrorが表示されます:未定義の エラーのプロパティ'internalId'を読み取ることができません。これは私がこれまでに試したことです。

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"}]}

]}]
}

モデル:(schemesmodel.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
//                 }]
    }
});

私はExtjs4を初めて使用します。どこが間違っているのか教えてください。これに関するポイントは非常に役立ちます。

@Izhakiとの話し合いに基づいて質問を更新しました。

4

1 に答える 1

3

JSONで子を表すrootプロパティは、リーダーのプロパティと一致している必要があります。あなたのdivisionsJSONは次のようになります。

{
   "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 に答える