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);
    }

这样的话就可实现异步加载了,

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值