level 1
rngwxd
楼主
hi, 大家好。我碰到个奇怪的问题。ztree 3.5,使用ajax获取节点数据,一切都ok。
然后我想加载完一个节点的子节点并动态刷新之后,在onclick的callback函数里边,获取该节点的底下所有子节点数组。大致代码如下
function reLoadNode(event, treeId, treeNode) {
var zTree = $.fn.zTree.getZTreeObj("tree");
var type = "refresh";
var silent = true;
if(treeNode){
zTree.reAsyncChildNodes(treeNode, type);
if (!silent) zTree.selectNode(treeNode);
console.debug(treeNode);
console.debug(treeNode.children);
}
}
var setting = {
async: {
enable: true,
url:getAsyncUrl,
dataFilter: ajaxDataFilter
},
callback: {
onClick: reLoadNode
}
};
$.fn.zTree.init($("#tree"), setting);
现在问题在于,在reLoadNode callback里头,我 通过 console.debug(treeNode); 查看整个treeNode object,是可以在firebug的控制台里边,看到里边有children属性,并且是有值的,但是随后的 console.debug(treeNode.children); 却在debug里边只显示一个空数组,即 treeNode.children 取不到
正确的
值 (见抓图)
第一个抓图是展开后的treeNode里边的属性,显示是有children,且有值(包含2个子节点)

第二个抓图是js执行的结果,显示treeNode.children 返回的是个空数组

现在ajax加载子节点是ok的,就是这部分js很是让人不解。。。
哪位高手指点一下,谢谢!
2013年02月22日 05点02分
1
然后我想加载完一个节点的子节点并动态刷新之后,在onclick的callback函数里边,获取该节点的底下所有子节点数组。大致代码如下
function reLoadNode(event, treeId, treeNode) {
var zTree = $.fn.zTree.getZTreeObj("tree");
var type = "refresh";
var silent = true;
if(treeNode){
zTree.reAsyncChildNodes(treeNode, type);
if (!silent) zTree.selectNode(treeNode);
console.debug(treeNode);
console.debug(treeNode.children);
}
}
var setting = {
async: {
enable: true,
url:getAsyncUrl,
dataFilter: ajaxDataFilter
},
callback: {
onClick: reLoadNode
}
};
$.fn.zTree.init($("#tree"), setting);
现在问题在于,在reLoadNode callback里头,我 通过 console.debug(treeNode); 查看整个treeNode object,是可以在firebug的控制台里边,看到里边有children属性,并且是有值的,但是随后的 console.debug(treeNode.children); 却在debug里边只显示一个空数组,即 treeNode.children 取不到
正确的
值 (见抓图)
第一个抓图是展开后的treeNode里边的属性,显示是有children,且有值(包含2个子节点)

第二个抓图是js执行的结果,显示treeNode.children 返回的是个空数组
现在ajax加载子节点是ok的,就是这部分js很是让人不解。。。哪位高手指点一下,谢谢!