关于子页面操作ztree同步的问题

nfgb 发布于 2013/01/08 11:44
阅读 949
收藏 0

 

@zTree 你好,想跟你请教个问题:

我的页面通过iframe包含的左右两个页面,左边是ztree,右边是列表,ztree读取的是本地的某个目录,现在要实现点击右边的列表,展开左边对应的节点。

操作:比如根节点root,子节点child1,child2,在页面初始化时,只有root,单击root刷新右边列表,显示child1,chil2,(这个时候tree里还没有加载出来child1,child2),点击右边列表的child1,展开tree的child1。

实现思路:通过id找到root,展开root,然后再找到child1,展开。

问题:找到root展开以后child1的创建工作还没有完成,就执行了查找child1的操作,通过id无法找到child1,则无法展开。

不知道是否有方法使child1创建完成以后,再查找child1呢??

 

代码:这是右边列表的onclick事件,funcTree为iframe的id,hashCode为文件路径的hashCode,用做id

var parentNode=window.parent.funcTree.zTree.getNodeByParam("id",<%=hashCode%>);//查找父节点
        window.parent.funcTree.zTree.expandNode(parentNode, true);//展开父节点
        alert(111);//弹出后可以找到子节点,去掉无法找到,异步问题
        var treeNode=window.parent.funcTree.zTree.getNodeByParam("id",hashcode);//查找Ztree里id为hashcode的子节点
         window.parent.funcTree.zTree.expandNode(treeNode, true);//展开子节点

加载中
0
zTree
zTree

这个应该有很多种解决方案,主要思路是要如何解决 捕获异步加载结束的问题。

1、点击 root 让右侧显示内容时,可以利用reAsyncChildNodes 悄悄加载子节点,这样当右侧点击后,应该是已经有子节点了。

2、利用setTimeout 监控,当找到子节点后进行后面的操作;

3、利用 父节点的 treeNode.zAsync 属性判断,在 expandNode 之前如果该属性为 true 那么可以利用onAsyncSuccess 回调进行控制; 如果是false,那么应该可以立刻执行后续代码

请根据你的实际情况,灵活运用,有问题就继续沟通吧

0
n
nfgb

谢谢,我已经通过改为单击打开子节点解决了问题!!!

返回顶部
顶部