Extjs 如何使用另一个树存储读取器中的数据加载树存储

Extjs 如何使用另一个树存储读取器中的数据加载树存储,extjs,Extjs,我有两个树面板,每个配置有单独的树存储。我已为一个存储配置了代理。在加载此事件时,我尝试加载第二个存储(代理内存),如下所示。但是不起作用 扩展版本:4.0.7 _treeStore2 = Ext.create('Ext.data.TreeStore', { model: 'Scenario', proxy : { type : 'memory' } }); _treeStore1 = Ext.create('Ext.data.TreeStore', { model: 'Scenario',

我有两个树面板,每个配置有单独的树存储。我已为一个存储配置了代理。在加载此事件时,我尝试加载第二个存储(代理内存),如下所示。但是不起作用

扩展版本:4.0.7

_treeStore2 = Ext.create('Ext.data.TreeStore', {
model: 'Scenario',
proxy : {
type : 'memory'
}

});

_treeStore1 = Ext.create('Ext.data.TreeStore', {
model: 'Scenario',
root:'data1',
proxy : {
type : 'ajax',
url: '/proj/examples?id='+_Id,
reader : {
type : 'json',
root:'data1'
}
},
listeners: {
'load': {
fn: function(store, records, success, operations) {
_treeStore2.setRootNode(_treeStore1.getProxy().getReader().jsonData.data2);
}
}
});
示例JSON数据:

 {"data1":[{"name":"value","children":[]}],"data2": [{"name":"value","children":[]}]}

不要使用原始Json数据,而是尝试将“records”参数从加载侦听器传递到另一个存储。比如说:

listeners: {
    load: function(store, records) {
        _treeStore2.setRootNode.setRootNode(records);
    } 
}
试试这个:

/**
 * Because of a bug in Ext.data.NoteInterface in ExtJs < 4.1.3
 * we have to do deep cloning.
 */
var clone = function(node) {
  var result = node.copy(),
      len = node.childNodes ? node.childNodes.length : 0,
      i;
  // Move child nodes across to the copy if required
  for (i = 0; i < len; i++)
    result.appendChild(clone(node.childNodes[i]));
  return result;
};

var oldRoot = store1.getRootNode(),
    newRoot = clone(oldRoot);

store2.setRootNode(newRoot);
/**
*因为ExtJs<4.1.3中的Ext.data.NoteInterface中存在错误
*我们必须进行深度克隆。
*/
var clone=函数(节点){
var result=node.copy(),
len=node.childNodes?node.childNodes.length:0,
我
//如果需要,将子节点移动到副本
对于(i=0;i