layui tree树形数据加载缓慢的问题(已解决) 懒加载 数据分批加载

1 篇文章 0 订阅
0 篇文章 0 订阅

一级标题

layui呈现树形:

//暂存已经查询到的节点,用于后边数据整合(全局变量)
var temp;
//暂存已经查询到的节点的id,用于后边节点的展开(全局变量)
var arrSwjgDm = [];

//树形填充数据
var treeData;


//树形图加载第一步(先加载三层)
 $.post('/dagdgl/****/*****', function (res) {
            if(res.rtnCode == '200'){
                temp = res.data.array;
                arrSwjgDm.push(res.data.swjgDm);
                treeData = layui.treeTable.pidToChildren(temp, 'id', 'pid');
                inst = tree.render({
                    elem: '#organizationTree',
                    onlyIconControl: false,
                    data: treeData,
                    id:'treeId',
                    click: function (obj) {
                        selObj = obj;
                        $('#organizationTree').find('.ew-tree-click').removeClass('ew-tree-click');
                        $(obj.elem).children('.layui-tree-entry').addClass('ew-tree-click');
                        swjgDmSelected = obj.data.id;
                        sum =  treeData[0].id;
                    }
                });
            }else {
                layer.msg("树初始化失败!", {icon: 2});
            }
        });
单击树节点触发事件回调:
/**
     * 单击树节点触发事件
     */
    $(document).on("click",".layui-tree-main",function(){
    
        var swjgDm = $(this).parent("div").parent("div").find("data-id").prevObject[0].dataset.id;

//判断暂存节点,防止重复点击回调
        if(arrSwjgDm.indexOf(swjgDm) == -1){
            var arr = [];
            $.ajax({
                type: "POST",
                url: '/dagdgl/zzdarkgl/querySwjgTreeChilds',
                async: false,//下一步需要等待此状态的返回值再进行操作,需要使用同步方式
                data: {
                    swjgDm: swjgDm
                },
                success: function (res) {
                    if (res.rtnCode == '200') {
                    //将已经点击的节点暂存
                        arrSwjgDm.push(swjgDm);
                        //使点击过的节点都呈现展开状态
                        for(var i = 0; i < temp.length; i++){
                            if(arrSwjgDm.indexOf(temp[i].id) != -1){
                                temp[i].spread = true;
                            }
                        }
                        //数据整合
                        temp = temp.concat(res.data)
                        treeData = layui.treeTable.pidToChildren(temp, 'id', 'pid');
                        //树刷新
                        tree.reload('treeId',{ data: treeData });
                    }
                }
            });
        }
    });
数据格式:
(注:数据为乱写,只看格式就好)

temp  = [
	{
		id: '12456968',
		name: 'name1',
		pid: '1236485455'   //父节点
	},
	{
		id: '12456984668',
		name: 'name2',
		pid: '65465451456'  
	},
	{
		id: '12456984668',
		name: 'name2',
		pid: '65465451456'  
	}
];

treeData = [
			{
		id: '12456968',
		name: 'name1',
		pid: '1236485455' ,  //父节点
		spread: true,
		children:[
			{
				id: '12456984668',
				name: 'name2',
				pid: '65465451456'  
			}
		]
	}
]
知识点讲解:

在这里插入图片描述

在这里插入图片描述

1、给这个<div>添加点击事件(根据class添加点击事件)
$(document).on("click",".layui-tree-main",function(){
});

2、获取本<div>的父元素(父元素的父元素中的data-id属性是我们要的id)
$(this).parent("div").parent("div").find("data-id").prevObject[0].dataset.id;

3、layui中自带方法pidToChildren(),文件为treeTable.js
layui.treeTable.pidToChildren(temp, 'id', 'pid');

4、两个数组合并(不去重)
arr1.concat(arr2)
  • 4
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

阳光彩虹小红码

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值