您的位置:首页 > 其它

zTree异步加载自动展开

2015-07-26 00:00 302 查看
摘要: zTree 异步加载 自动展开

最近在处理一个树形菜单,要做到异步加载、自动展开。可怎么搞都不行,要点击一下才能展开所有。

使用的zTree版本是v3.5.18。其实还是蛮简单的。话不多说,代码如下:

/**
* 初始化菜单
*/
var initTree = function(treeId) {
var settings = {
treeId: treeId,
async: {
enable: true,
type: 'post',
dataType: 'json',
url: 'menu/getMenusByParentId',
// 查询子菜单参数,传父节点id、以及父节点是否为叶子。叶子节点将不再查询,提高性能
autoParam: ["id=parent_id", "is_leaf"],
dataFilter: function(treeId, parentNode, responseData) {
if(responseData) {
for(var i = 0, length = responseData.length; i < length; i++) {
var node = responseData[i];
if(node.is_leaf == 0) {//节点的isParent=true,才会异步加载子节点
node.isParent = true;
}
}
}

return responseData;
}
},
callback: {
onAsyncSuccess: function(event, treeId, treeNode, msg){
// 此回调函数可逐级异步展开子节点
if(treeNode.isParent == true && treeNode.children
&& treeNode.children.length > 0) {
var children = treeNode.children;
for(var i = 0, length = children.length; i < length; i++) {
zTreeObj.reAsyncChildNodes(children[i], "refresh", false);
}
zTreeObj.expandNode(treeNode, true);
}
}
}
};

var rootNode = {name:"菜单", murl:'', isParent: true, open:false, id: 0, is_leaf: 0};
var zTreeObj = $.fn.zTree.init($("#"+treeId), settings, rootNode);
// 异步加载树.这里要注意:直接传rootNode异步刷新树,将无法展开rootNode。
// 要通过如下方式获取根节点。false参数展开本节点
zTreeObj.reAsyncChildNodes(zTreeObj.getNodes()[0], "refresh", false);
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: