Ошибка дерева поиска Extjs при чтении из формата json

Я все еще новичок в Extjs. У меня есть TreeStore, который читает строку JSON в качестве входных данных, и я могу представить ее на панели дерева. Но когда я пытаюсь использовать древовидную структуру в средстве выбора дерева, появляется эта ошибка:

Здесь чего-нибудь не хватает?

// try to find a record in the store that matches the value
        record = value ? me.store.getNodeById(value) : me.store.getRootNode();

Вот формат JSON:

{
  success: true,
  "children": [
    {
      "id": "G_1",
      "text": "group1",
      "leaf": false
    }, 
    {
      "id": "G_2",
      "text": "group2",
      "leaf": false
     }
  ]
}

И вот мой TreeStore:

Ext.define('App.store.GroupTree', {
    extend: 'Ext.data.TreeStore',
    model: 'App.model.GroupTree',
    requires: 'App.model.GroupTree',
    proxy: {
        type: 'ajax',
        url: 'property/tree.json',
        reader: {  
            type: 'json',
            root:'children'
        }
    },
});

Мой древовидный предмет:

items: [
  {  
    xtype: 'treepicker',
    name: 'propertyCmb',
    fieldLabel: 'Property',
    labelWidth: 60,
    displayField: 'text',
    store: 'GroupTree',
    valueField: 'id',
    queryMode: 'local',
  }
]

Вот код модели дерева магазинов

Ext.define('App.model.GroupTree', {
    extend: 'Ext.data.Model',
    fields: [
        {name: 'id', type: 'string', useNull: true},
        {name: 'text', type: 'string'},
        {name: 'leaf', type: 'boolean'},
        {name: 'expanded', type: 'boolean'}
    ]
});

1 ответ

Решение

Ошибка возникает из-за того, что хранилище не создается автоматически при назначении на ваш древовидный store: 'GroupTree', Вы должны сначала создать его экземпляр и тот экземпляр, который нужно назначить средству выбора дерева. См. Документацию http://docs.sencha.com/extjs/5.0.1/.

Следующее должно работать

var groupStore = Ext.create('App.store.GroupTree');
groupStore.load();

var picker = Ext.create('Ext.ux.TreePicker',{
  name: 'propertyCmb',
  store: groupStore,
  fieldLabel: 'Property',
  labelWidth: 60,
  displayField: 'text',
  valueField: 'id',
  queryMode: 'local',
  renderTo: Ext.getBody()
});

Работающую скрипку можно найти по адресу https://fiddle.sencha.com/.

Другие вопросы по тегам