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