ZTree學習(二):異步加載樹結構


一,使用場景

遇到這種大數據加載,特別的樹結構,而且是在彈出層中加載的,就會出現閃一下或者是卡主的情況,所以選擇異步加載。
 

二,異步加載使用關鍵,還是在setting參數上

[javascript]  view plain  copy
 
  1. var setting = {  
  2.         async:{  
  3.             autoParam:["parentId"],    
  4.             enable:true,   
  5.             type:"post",    
  6.             url:getUrl,  
  7.             dataFilter:filter,  
  8.         },  
  9.         check : {  
  10.             chkStyle: "radio",  
  11.             enable: false,  
  12.             chkboxType : { "Y" : "s", "N" : "ps" },  
  13.             radioType : "level"  
  14.         },  
  15.         view: {  
  16.             dblClickExpand: false,  
  17.             addDiyDom:addDiyDom  
  18.         },  
  19.         data : {  
  20.             key : {  
  21.                 name : "unitName"  
  22.             },  
  23.             simpleData : {  
  24.                 enable : true,  
  25.                 idKey : "id",  
  26.                 pIdKey : "parentId",  
  27.                 rootPId : 0  
  28.             }  
  29.         },  
  30.         callback : {  
  31.             beforeAsync : ztreeBeforeAsync,  
  32.             onAsyncSuccess : ztreeOnAsyncSuccess,  
  33.             onClick:ztreeOnAsyncSuccess  
  34.         }  
  35.     };  


 
最關鍵的部分就是async參數設置上的部分還有callback中onAsyncSuccess的設置上
autoParam:如果請求的url是帶參數的,此值就填寫參數名稱,當然如果是異步加載,這個是一定有,這個是一個數組來的,如果有多個參數,那么形式就是["1","2","3"]
enable:true, 表示是否使用異步加載,當然是true了。
type:"post",請求方式,是post還是get,一般都是post。
url:getUrl,這個url的值一定不可以寫"",一定要記住,記住,記住。當然想我這里寫一個方法,其實我這里是一個空方法。是可以的。
dataFilter:filter,這個參數非常重要。重要到哪里,我們一會兒單獨說。
onAsyncSuccess : ztreeOnAsyncSuccess,用於捕獲異步加載正常結束的事件回調函數,這個函數就是主要調用的函數。異步獲取需要的數據,然后加載上去就可以。
 
[javascript]  view plain  copy
 
  1. function ztreeOnAsyncSuccess(event, treeId, treeNode){  
  2.     var url = "unitAction!xzqhTree.action?parentId=";  
  3.     if(treeNode == undefined){  
  4.         url += "1";  
  5.     }  
  6.     else{  
  7.         url += treeNode.id;  
  8.     }  
  9.     $.ajax({  
  10.         type : "post",  
  11.         url : url,  
  12.         data : "",  
  13.         dataType : "json",  
  14.         async : true,  
  15.         success : function(jsonData) {                
  16.             if (jsonData != null) {       
  17.                 var data = jsonData.unitList;  
  18.                 if(data != null && data.length != 0){  
  19.                     if(treeNode == undefined){  
  20.                         treeObj.addNodes(null,data,true);// 如果是根節點,那么就在null后面加載數據  
  21.                     }  
  22.                     else{  
  23.                         treeObj.addNodes(treeNode,data,true);//如果是加載子節點,那么就是父節點下面加載  
  24.                     }  
  25.                 }  
  26.                 treeObj.expandNode(treeNode,true, false, false);// 將新獲取的子節點展開  
  27.             }  
  28.         },  
  29.         error : function() {  
  30.             alert("請求錯誤!");  
  31.         }  
  32.     });  
  33.       
  34. };  


 
 
就是一個簡單的ajax請求。
還有就是在JS的初始化中把樹結構初始化一下  $.fn.zTree.init($("#chooseXzqhTree"), setting);
到這里,一個簡單的異步加載就完成了。
 
 

三:遇到的問題

每次異步加載之后,老是會出現一個undefined節點,沒有緣由的出現,解決辦法是設定
dataFilter:filter,這個參數非常重要。重要到哪里,我們一會兒單獨說。
是的,沒有錯,就是設置了dataFilter,雖然filter方法中什么都沒有寫,但是這個問題確實是解決了。
 
給文章轉載自以下地址,並非本人心得:https://blog.csdn.net/u010951692/article/details/51833077


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM