попробуйте использовать только один магазин. Он должен иметь «виртуальный» корневой узел, содержащий столько элементов, сколько корневых узлов вы хотите на первом уровне, и установить rootVisible: false в дереве. Таким образом, у вас будет дерево, как показано ниже:
non-visible root
|
+-- first root
| :
|
+-- second root
:
Но учитывая, что вы установили rootVisible: false, вы увидите, что
+-- first root
| :
|
+-- second root
:
UPDATE
Это JSON, который у меня есть в моем проекте (у меня есть дерево, которое показывает более одного корня)
{
"actions" : [{
"action" : "Version 1.3.21.0",
"url" : "/Operations/Version%201.3.21.0"
}, {
"action" : "Version 1.3.16.0",
"url" : "/Operations/Version%201.3.16.0"
}]
}
и вот модель, которую я использую:
Ext.define('App.model.PluginAction', {
extend : 'Ext.data.Model',
fields : [
{name: 'text', mapping: 'action'},
'url',
'description',
{
name: 'leaf',
convert: function(val, data) {
return data.raw && data.raw.children;
}}
],
hasMany : { model: 'PluginAction', name: 'children'},
idProperty: 'text'
});
И определение моего класса дерева:
Ext.define('App.view.layout.PluginActionTree', {
extend: 'Ext.tree.TreePanel',
alias: 'widget.pluginActionTree',
hideHeaders: true,
rootVisible: false,
useArrows: true,
lines: false,
containerScroll: true,
autoSize: true,
layout: 'fit',
model : 'App.model.PluginAction'
}
Удачи!
Обновление:
Проблема в том, что деревья могут иметь только один и только один корневой узел. Как только вы это знаете, вам нужно создать корневой узел (который будет скрыт), и этот корневой узел должен иметь столько узлов, сколько вам нужно.
Ext.create('Ext.tree.Panel', {
xtype : 'treepanel',
hideHeaders: true,
rootVisible: false, // this is important
containerScroll: true,
autoSize: true,
layout: 'fit',
root: {
children : [
{ text: 'root1' },
{ text: 'root2' }]
},
renderTo: Ext.getBody()
});
это работает! пожалуйста, посмотрите на http://jsfiddle.net/FDY6v/