其实并不是很难哈,主要参考官网的信息
zTree异步加载
一、思路
前端按照下面的代码配置好,然后每次发起ajax请求后端都应该去查询该目录下的子节点返回给前端,就是这样就可以实现异步加载了。但是有一点要注意的是,刚进入页面的第一次从根节点加载的时候
.
f
n
.
z
T
r
e
e
.
i
n
i
t
(
.fn.zTree.init(
.fn.zTree.init(("#treeDemo"), setting);这样就行了,不用带节点信息,然后后端方法处理的时候就做一下判断,第一次加载走一个逻辑,后续的走一个逻辑。
二、使用步骤
1.ztree代码配置
//setting都是最基本的属性
var setting = {
data: {
simpleData: {
enable: true
}
} ,
async: {
enable: true,
url:"auditDataRule/testcc.do",
autoParam:["id", "name", "level"],
otherParam:{"otherParam":"zTreeAsyncTest"},
dataFilter: filter
}
};
function filter(treeId, parentNode, childNodes) {
if (!childNodes) return null;
console.log(treeId); //当前树的id 我这里是treeDemo
console.log(parentNode); //当前节点的对象
console.log(childNodes); //所有叶子节点的稽核
for (var i=0, l=childNodes.length; i<l; i++) {
//这里写出想要对后端返回数据的过滤操作
}
return childNodes;
}
var zNodes =[
{ id:1, pId:0, name:"parentNode 1", open:true},
{ id:11, pId:1, name:"parentNode 11",isParent:true},
{ id:111, pId:11, name:"leafNode 111"},
{ id:112, pId:11, name:"leafNode 112"},
{ id:12, pId:1, name:"parentNode 12",isParent:true},
{ id:121, pId:12, name:"leafNode 121"},
{ id:13, pId:1, name:"parentNode 13", isParent:true},
{ id:2, pId:0, name:"parentNode 2", isParent:true}
];
//初始化这个树,这个的$("#treeDemo")我的树的id就是这个。
$.fn.zTree.init($("#treeDemo"), setting, zNodes);
这要你后端写一个接口就可以获取信息了,当然你要点击的是13和2这两个节点就可以异步加载,因为isParent:true的节点,他们的子节点已经加载出来了,懂了吧,不信你把12的子节点121删除,然后你重新运行,他就会从后端获取数据,实现异步加载。
2.后端接口例子
代码如下(示例):
//我这里的RequestInfo就是项目封装好的接收前端参数的。
public String test(RequestInfo requestInfo){
Map requestMap = requestInfo.getRequestMap();
String id = (String)requestMap.get("id");
String name = (String)requestMap.get("name");
String level = (String)requestMap.get("level");
String otherParam = (String)requestMap.get("otherParam");
System.out.println(id);
System.out.println(name);
System.out.println(level);
System.out.println(otherParam);
List<HashMap<String,Object>> list = new ArrayList<HashMap<String,Object>>();
for(int i = 0; i < 5; i++){
//这里面随便写,就是测试哈
HashMap<String,Object> hm = new HashMap<String,Object>(); //最外层,父节点
hm.put("id",id+i);//id属性 ,数据传递
hm.put("name", name+i); //name属性,显示节点名称
hm.put("pId", id+i+1);
list.add(hm);
}
System.out.println(list);
return JSON.toJSONString(list);
}
这样的话就可实现异步加载了,