配置:
var setting = {
check: {
enable: false
},
async: {
enable: true,
type: "get",
headers: Util.getHeader(),
url: URL ,
autoParam: ["ID"],//多个参数用英文逗号隔开;
otherParam: {"otherParam": "zTreeAsync"},
dataFilter: filter
},
data: {
//自定义数据结构
key: {
name: "NAME",
isParent: "IS_PARENT",
},
simpleData: {
enable: true,
idKey: "ID",
pIdKey: "PARENT_ID",
//根节点ID
rootPId: '我是根节点ID'
}
},
callback: {
//树点击事件
onClick: zTreeOnClick,
//树延迟加载事件
onAsyncSuccess: zTreeOnAsyncSuccess
}
};
// 数据处理回调函数
function filter(treeId, parentNode, childNodes) {
//数据处理start ==
if (!childNodes) return null;
for (var i=0, l=childNodes.length; i
方法实现:
function zTreeOnAsyncSuccess(event, treeId, treeNode, msg) {
if (!tree) {
alert("error!");
return
}
var selectedNode = tree.getSelectedNodes();
var nodes = tree.getNodes();
tree.expandNode(nodes[0], true);
}
//树节点的点击事件
function zTreeOnClick(treeId, treeNode, clickFlag) {
alert("点击!")
};
下面的根据自己所用框架见机行事:
$.ajax({
url: url,
type: 'GET',
data: 我是参数,
//请求头中添加日志uuid
headers: getHeader(),
dataType: "json",
async: !sync,
timeout: 我是超时时间,
beforeSend: function (xhr) {
xhr.overrideMimeType("text/plain; charset=utf-8");
},
success: function (data, textStatus, xhr) {
//主逻辑
if (!data) {
return;
}
var result = data.RSP.DATA;
//启动树节点
tree = $.fn.zTree.init($("#treeDemo"), setting, result);
var nodes = tree.getNodes();
tree.expandNode(nodes[0], true, false);
},
error: function (xhr, textStatus, errorThrown) {
alert("error!");
}
});
1、将需要作为参数提交的属性名称,制作成 Array 即可,例如:["id", "name"]
2、可以设置提交时的参数名称,例如 server 只接受 zId : ["id=zId"]
可以为空[ ],如果有 key,则必须存在 value。 例如:[key, value]
beforeAsync: 方法名 - 用于捕获异步加载之前的事件回调函数,zTree 根据返回值确定是否允许进行异步加载
onClick: 方法名 — 用于捕获节点被点击的事件回调函数
踩坑:如果没有设置autoParam,或者autoParam设置的不对,会出现zTree层级不对(比如每次点击子节点会多加载数据)
参考:https://www.cnblogs.com/zero-zm/p/9911573.html