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

相關文章
相關標籤/搜索