ztree进行异步加载就是靠传入参数的不同来对不同子、父节点进行判断的,从后台返回不同的json串。进行展示。
var setting = {
view: {
selectedMulti: false
},
data: {
simpleData: {
enable:true,
idKey: "id",
pIdKey: "pId",
rootPId: ""
}
},
async: {
enable: true,
url:"s", //通过URL进行访问
autoParam:["id"], //动态参数,选择不同父节点进行加载的时候,传的是父节点的值
otherParam:{"otherParam":"zTreeAsyncTest"},
dataFilter: filter
},
callback: {
beforeClick: beforeClick,
beforeAsync: beforeAsync,
onAsyncError: onAsyncError,
onAsyncSuccess: onAsyncSuccess
}
};
function filter(treeId, parentNode, childNodes) {
if (!childNodes) return null;
for (var i=0, l=childNodes.length; i<l; i++) {
childNodes[i].name = childNodes[i].name.replace(/\.n/g, '.');
}
return childNodes;
}
function beforeClick(treeId, treeNode) {
if (!treeNode.isParent) {
alert("请选择父节点");
return false;
} else {
return true;
}
}
function beforeAsync(treeId, treeNode) {
return true;
}
function onAsyncError(event, treeId, treeNode, XMLHttpRequest, textStatus, errorThrown) {
}
function onAsyncSuccess(event, treeId, treeNode, msg) {
alert(treeId);
alert(msg);
}
function refreshNode() {
var zTree = $.fn.zTree.getZTreeObj("treeDemo"), //取得ztree的对象,就是根节点的对象
nodes = zTree.getSelectedNodes(); //取得所有的父节点
alert(nodes.length);
if (nodes.length == 0) {
alert("请先选择一个父节点");
}
for (var i=0, l=nodes.length; i<l; i++) {
zTree.reAsyncChildNodes(nodes[i], "add", false);
强行异步加载父节点的子节点。[setting.async.enable = true 时有效]
已经加载过的父节点可反复使用此方法重新加载。
请通过 zTree 对象执行此方法。
Function 参数说明
parentNodeJSON
指定需要异步加载的父节点 JSON 数据
1、parentNode = null 时,相当于从根节点 Root 进行异步加载
2、parentNode.isParent = false 时,不进行异步加载
3、请务必保证此节点数据对象 是 zTree 内部的数据对象
reloadTypeString
reloadType = "refresh" 表示清空后重新加载。
reloadType != "refresh" 时,表示追加子节点处理。
isSilentBoolean
设定异步加载后是否自动展开父节点。
isSilent = true 时,不展开父节点,其他值或缺省状态都自动展开。
返回值无
目前无任何返回值
}
}
$(document).ready(function(){
$.fn.zTree.init($("#treeDemo"), setting);
$('button').click(function(){
refreshNode();
});
});