异步记载树默认展开:
1、页面进来加载方法:expandAll();
2、异步加载回调函数:onAsyncSuccess: zTreeOnAsyncSuccess
3、然后加入下面内容:
var curStatus = "init", curAsyncCount = 0, asyncForAll = false,goAsync = false;
function beforeAsync() {
curAsyncCount++;
}
function zTreeOnAsyncSuccess(event, treeId, treeNode, msg) {
curAsyncCount--;
if (curStatus == "expand") {
expandNodes(treeNode.children);
} else if (curStatus == "async") {
asyncNodes(treeNode.children);
}
if (curAsyncCount <= 0) {
if (curStatus != "init" && curStatus != "") {
asyncForAll = true;
}
curStatus = "";
}
}
function expandAll() {
if (!check()) {
return;
}
var zTree = $.fn.zTree.getZTreeObj("fitTypeTree");
if (asyncForAll) {
zTree.expandAll(true);
} else {
expandNodes(zTree.getNodes());
if (!goAsync) {
curStatus = "";
}
}
}
function check() {
if (curAsyncCount > 0) {
return false;
}
return true;
}
function expandNodes(nodes) {
if (!nodes) return;
curStatus = "expand";
var zTree = $.fn.zTree.getZTreeObj("fitTypeTree");
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 asyncNodes(nodes) {
if (!nodes) return;
curStatus = "async";
var zTree = $.fn.zTree.getZTreeObj("fitTypeTree");
for (var i=0, l=nodes.length; i<l; i++) {
if (nodes[i].isParent && nodes[i].zAsync) {
asyncNodes(nodes[i].children);
} else {
goAsync = true;
zTree.reAsyncChildNodes(nodes[i], "refresh", true);
}
}
}