Ошибка дерева поиска 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/.