TreePanel с вложенными данными JSON

Обновить

December 2018

Просмотры

9.5k раз

2

Я хочу добавить вложенные данные из JSON в TreePanel. Моя проблема заключается в том , что дерево в настоящее время в список по количеству записей в формате JSON (число делений, здесь 1 в примере) без какого - либо текста. Но когда я выбираю ребенок, он показывает неперехваченный 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
//                 }]
    }
});

Я довольно новыми для ExtJS 4. Дайте мне знать, где я неправильно. Все моменты, касающиеся это будет очень полезно.

Обновленный вопрос на основе обсуждения с @Izhaki.

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 конфиги.