0

いくつかのツリー パネルがあり、それぞれが個別のツリー ストアで構成されています。1 つのストアのプロキシを構成しました。このロードイベントで、以下のように2番目のストア(プロキシメモリ)をロードしようとしています。しかし、うまくいきません。

外部バージョン: 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

生のJsonデータを使用する代わりに、「records」パラメーターをロードリスナーから他のストアに渡すだけにしてみてください。だからこのようなもの:

listeners: {
    load: function(store, records) {
        _treeStore2.setRootNode.setRootNode(records);
    } 
}
于 2013-01-12T02:24:21.180 に答える
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 に答える