EXT Tree 两颗树如何共享一个数据

定义两个TREE,
tree1
tree2

tree1载入数据,当tree1载入数据后,tree2载入与tree1相同的数据(不进行服务器请求),如何做到,谢谢

[b]问题补充:[/b]
lovewhzlq 感谢您的回答,按您的方法进行了测试,其结果是

tree2 仅仅拥有了与 tree1相同的数据获取方式,tree1获取数据后,展开tree2会再次发送请求.我希望tree2能获得tree1已经载入的数据,类似store.loadData(data)方法

附 按您的方法进行的测试代码
var tree1 = new Ext.tree.TreePanel({
el:'tree',
loader: new Ext.tree.TreeLoader({dataUrl:'data.asp'}),
root:new Ext.tree.AsyncTreeNode({
text: 'root1',
id:'0'
})
});
tree1.render();
tree1.root.expand ();

 var loader = tree1.getLoader(); 
               //-------------------------------------------------------------

var tree2 = new Ext.tree.TreePanel({
el:'tree2',
loader:loader,
root:new Ext.tree.AsyncTreeNode({
text: 'root2',
id:'0'
})
});
tree2.render();
tree2.root.expand ();

/*data.asp 返回数据
[{
id:1,
text:'node0',
leaf : true
}]
*

[b]问题补充:[/b]
感谢 yourgame 的帮助

因为 tree1的node 会产生修改操作,其修改结果我想直接反应到tree2上面
“把数据取出来放到一个地方存储起来”,不太适用,

最好就是两个tree共享一个数据,如 grid的store在两个表中使用,修改其中任意一个表,两个表都会有反应出修改结果

4个回答

自己继承TreePanel,扩展下它内部保存数据的部分,让两树使用同一个存储数据的js对象应该就可以实现两个tree共享一个数据

var loader = tree1.getLoader();

tree2再把这个loader设置成自己的构造一下,

试试看这种方式

你可以把数据取出来放到一个地方存储起来,然后两个树一起加载

这样的话,还不如两个树分开加载来得容易

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问