Ztree异步加载自动展开节点

在Ztree的官网Demo中,有自动展开的例子,是经过设置节点属性open:true来实现自动展开的,可是在异步加载中,这个属性设置为true也不会自动展开,由于open:true是指在有子节点的状况下展开,在异步加载以前,当前节点是没有子节点的,因此没法打开。
异步加载自动展开解决方法以下:

1.设置ztree的加载完成的回调函数:

setting = { 
    ......             
    callback: {
        ......
        onAsyncSuccess: zTreeOnAsyncSuccess 
    } 
}; node

onAsyncSuccess是指加载完成后要调用的方法,其余节点的设置请参考ztree的官网Demo. 异步

2.编写方法zTreeOnAsyncSuccess 函数

var firstAsyncSuccessFlag = 0;
function zTreeOnAsyncSuccess(event, treeId, msg) { 
if (firstAsyncSuccessFlag == 0) { 
          try { 
                 //调用默认展开第一个结点 
                 var selectedNode = zTree.getSelectedNodes(); 
                 var nodes = zTree.getNodes(); 
                 zTree.expandNode(nodes[0], true); 
             
                 var childNodes = zTree.transformToArray(nodes[0]); 
                 zTree.expandNode(childNodes[1], true); 
                 zTree.selectNode(childNodes[1]); 
                 var childNodes1 = zTree.transformToArray(childNodes[1]); 
                 zTree.checkNode(childNodes1[1], true, true); 
                 firstAsyncSuccessFlag = 1; 
           } catch (err) { 
             
           } 
             
     } 
} orm

此方法能够自动加载第一级节点,try{} catch()是为了捕获节点不存在时的异常,这样能够使其不跑出js错误信息。
firstAsyncSuccessFlag变量的做用是使tree只在页面初始化后自动展开一次,由于手动点击加号展开子节点的时候也会调用此方法,经过此变量来标识是否自动加载。 get

相关文章
相关标签/搜索