0

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

分机版本: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":[]}]}
4

2 回答 2

0

尝试这个:

/**
 * 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);
于 2013-07-06T11:45:10.720 回答
0

不要使用原始 Json 数据,而是尝试将“记录”参数从负载侦听器传递到另一个 Store。所以是这样的:

listeners: {
    load: function(store, records) {
        _treeStore2.setRootNode.setRootNode(records);
    } 
}
于 2013-01-12T02:24:21.180 回答