【问】zTree异步加载时添加父节点怎样避免再次加载整树
ztree吧
全部回复
仅看楼主
level 12
嘉AND 楼主
【问】zTree异步加载时添加父节点怎样避免再次加载整树
具体细节稍后补充
2015年03月26日 10点03分 1
level 12
嘉AND 楼主
具体情况是
每当我执行add方法添加父节点的时候,都回去server端重新获取一次树节点信息,并加载在新增加的节点下。
页面代码如下
<SCRIPT type="text/javascript" LANGUAGE="JavaScript">
var setting1 = {
async : {
enable : true,
type : "post",
dataType : "json",
url : "<%=path %>/JsonAction.action?id=0099",
autoParam : [ "id", "name", "pId", "isParent", "open" ]
},
data : {
keep: {
parent: true,
leaf:true,
},
simpleData : {
enable : true,
idKey : "id",
pIdKey : "pId",
rootPId : 0
}
},
edit: {
enable: true,
showRemoveBtn: true,
showRenameBtn: true
}
};
var newCount = 1;
//增加节点
function add(e) {
var zTreeObj = $.fn.zTree.getZTreeObj("Mytree");
isParent = e.data.isParent,
nodes = zTreeObj.getSelectedNodes(),
alert("当前选中"+nodes.length+"个节点")
treeNode = nodes[0];
alert(""+treeNode)
if (treeNode) {
treeNode = zTreeObj.addNodes(treeNode, {id:(100 + newCount), pId:treeNode.id, isParent:isParent, name:"new node" + (newCount++), open:true}, false);
} else {
treeNode = zTreeObj.addNodes(null, {id : (100 + newCount),pId : 0,isParent : isParent,name : "new node" + (newCount++),open : true}, false);
}
};
// zTree 的数据属性,深入使用请参考 API 文档(zTreeNode 节点数据详解)
$(document).ready(function() {
$.fn.zTree.init($("#Mytree"), setting1);
$("#addParent").bind("click", {isParent : true}, add);
$("#addLeaf").bind("click", {isParent : false}, add);
});
</SCRIPT>
2015年03月26日 10点03分 3
level 12
嘉AND 楼主
初始化完成
点击添加
添加之后
2015年03月26日 11点03分 4
level 1
楼主解决这个问题没,我也遇到这个问题了
2017年10月19日 01点10分 5
level 1
目前想到的方法是在后台,
获取ztree OtherPram传的特定值(这个值是你在前台组织的,比如说是isLoadedTree,保存是不是已经加载过树,加载过了那就不要再组织完整树结构,直接 return “” (空)到前台就好了
注:(我这边实测)感觉划横线这句话,根本没用。。(可能是我版本的问题?公司公用js好久没更新了)
他始终从当前点击的节点进行异步刷新的,并且是直接追加返回的json结构。。。很奇怪
另外:
实际上ztree的异步加载应该是 --> 根据你点击的节点,需要加载什么节点的数据就返回什么数据,而不是一下把整个树拉出来这样子。如果后台没做处理而拉取整个树结构,就会出现子节点下反复循环遍历整个树结构,出现这种问题,一般都是没有理解透ztree异步加载的作用方式。。
2018年10月29日 09点10分 6
1