我有一个Async TreePanel,它使用RPC代理从服务器加载数据。我想使用:
重新加载节点this.treeLoader.loadChildren(nodeModel);
然后,我希望加载的树节点被扩展。我试着:
treePanel.setExpanded(nodeModel, true, false);
但是第一次调用是异步的,所以“setExpanded”在节点加载之前发生。
解决方案是在treeLoader上使用LoadListener并在加载子节点之后展开节点但是侦听器的loaderLoad(..)方法无法直接知道重新加载的原因:也许用户扩展了节点并且这会触发重新加载,或者用户点击菜单选项以重新加载节点。
有没有办法改进这一点,以便在用户想要重新加载节点后更容易触发节点扩展?
感谢。
答案 0 :(得分:1)
尝试在loaderLoad方法中删除侦听器,并在loaderLoadException中删除以避免泄漏
答案 1 :(得分:0)
我建议存储被选中要重新加载的节点(向你添加一个onClick监听器)。比在loaderLoad中检查存储的对象是否等于加载节点的父节点:
loader.addLoadListener(new LoadListener() {
@Override
public void loaderLoad(LoadEvent loadEvent) {
ModelData parent = loadEvent.getConfig();
if(parent.equals(storedObject) {
// your code here