zTree_v3
zTree_v3 copied to clipboard
两颗树之间的节点交互出现js错误
场景: Tree1(Node1和Node2) 和 Tree2(含有Node1和Node2)
通过调用Tree2的api删除Tree2的Node2, 然后通过api获取Tree1的Node2,添加到Tree2中,以后鼠标悬浮Tree2的Node2就会出现js错误。 Cannot read property 'chkDisabled' of null。
个人分析是在获取Tree1的Node2的时候我使用了leftTree.transformToArray方法,导致node的一些属性找不到,能否源码里对这些数据进行检查,如果不存在就不要绑定事件。
真抱歉,最近忙项目,没有来看。。。不知道你的问题是否已经解决?
transformToArray 方法不会删除 node 的属性。。。只是把节点的子节点用递归方式全部转成 数组,便于有些用户处理数据, 但每个node 对象的 children 属性还是存在的,所以如果把 transformToArray 的结果直接扔给 zTree,你会发现有很多重复节点的。
今早抽空实验了一下,就用 Demo 中的 multiTree.html 测试, 修改了 dom ready 的方法:
var z1, z2;
$(document).ready(function(){
z1 = $.fn.zTree.init($("#treeDemo"), setting, zNodes);
z2 = $.fn.zTree.init($("#treeDemo2"), setting, zNodes);
var n = z2.getNodeByParam('id', 2);
z2.removeNode(n);
n = z1.getNodeByParam('id', 2);
z2.addNodes(null, z2.transformToArray(n));
});
因为不清楚你使用 transformToArray 的方式和 位置, 只能自己猜想着用了一下, 这么使用并不会造成js 错误,只是如我上一次答复说的一样,多了很多重复的节点而已。。。所以请你回复一下,你的错误情况。