zTree默认加载所有子节点

如果是同步加载的模式使用一句函数:

 treeObj.expandAll(true);

如果为异步模式,此方式不可用。

以业务代码为例:

$.typeTree = $.fn.zTree.init($("#typeTrees"), {
        async : {
            enable : true,
            url : "/backend/content/getlayout?columnId="+$('#rootColumn').val(),
            autoParam : ["id", "type"]
        },
		data : {
			simpleData : {
				enable : true,
				idKey : "id",
				pIdKey : "pId",
				rootPId : 0
			}
		},
		callback : {
			onExpand : function(event, treeId, treeNode){
				if(treeNode.type == "layout"){
					$.layoutid = treeNode.id;
					$.pageid = treeNode.getParentNode().id;
					$("#searchBtn").click();
				}
				else{
					$.layoutid = -1;
					$.pageid = -1;
				}
			},
			onClick : function(event, treeId, treeNode, clickFlag) {
				if(treeNode.type == "layout"){
					$.layoutid = treeNode.id;
					$.pageid = treeNode.getParentNode().id;
					$("#searchBtn").click();
				}
				else{
					$.layoutid = -1;
					$.pageid = -1;
				}
			},
            beforeAsync: beforeAsync, // 重点在这
            onAsyncSuccess: onAsyncSuccess // 重点在这
        }
	});

// 延时加载
    setTimeout(function(){
        expandAll("typeTrees");
    },100);

需要使用beforeAsync属性和onAsyncSuccess属性

具体函数以及参数定义:

var curStatus = "init", curAsyncCount = 0, goAsync = false;

function beforeAsync() {
    curAsyncCount++;
}


function onAsyncSuccess(event, treeId, treeNode, msg) {
    curAsyncCount--;
    if (curStatus == "expand") {
        expandNodes(treeNode.children);
    }

    if (curAsyncCount <= 0) {
        curStatus = "";
    }
}

function expandAll() {
    if (!check()) {
        return;
    }
    var zTree = $.fn.zTree.getZTreeObj("typeTrees");
    expandNodes(zTree.getNodes());
    if (!goAsync) {
        curStatus = "";
    }
}


function expandNodes(nodes) {
    if (!nodes) return;
    curStatus = "expand";
    var zTree = $.fn.zTree.getZTreeObj("typeTrees");
    for (var i=0, l=nodes.length; i<l; i++) {
        zTree.expandNode(nodes[i], true, false, false);//展开节点就会调用后台查询子节点
        if (nodes[i].isParent && nodes[i].zAsync) {
            expandNodes(nodes[i].children);//递归
        } else {
            goAsync = true;
        }
    }
}

function check() {
    if (curAsyncCount > 0) {
        return false;
    }
    return true;
}

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值