tel*_*wap 5 javascript jquery jstree
我有一个对象数组,其中每个对象看起来像这样的结构:
var data = [{
"code" : "i1",
"name" : "Industry 1",
"parentCode" : "i0"
},
{
//and more items just like that one
}];
Run Code Online (Sandbox Code Playgroud)
所以我jstree用来构建层次结构视图.既然jstree需要id和text,我data像这样映射数组:
datatree = $.map(data, function (item) {
return {
id : item.code,
text : item.name,
parent : item.parentCode
};
});
Run Code Online (Sandbox Code Playgroud)
然后我初始化我hierarchydiv中的实际树:
$('#hierarchy').jstree({
"core": {
"themes": {
"variant": "large"
},
"data": datatree,
},
'check_callback': true,
"checkbox": {
"keep_selected_style": false
},
"plugins": ["wholerow", "search", "unique"]
});
Run Code Online (Sandbox Code Playgroud)
当原始数组非常简单时,这可以构建树并且工作正常,可能是父级的一个或两个级别.但是,如果我使用完全相同的方式测试替代数组,但是有5个级别的父级,则控制台会抛出错误:
Uncaught TypeError: Cannot read property 'children' of undefined
Run Code Online (Sandbox Code Playgroud)
它指向jstree原始代码中的这一行:
k[c[o].parent.toString()].children.push(c[o].id.toString()),
Run Code Online (Sandbox Code Playgroud)
我怀疑它是一个计时问题,因为jstree无法构建子数组,因为仍有待处理的项目要加载.但我的假设可能是错的.
对于具有简单父级的数组,代码如何才能完美地运行,但是当存在多个父级时它会中断?它只是我想的时间,还是可能有更深层次的问题?
我已经阅读了这个问题,但似乎用户最初使用AJAX并解决了声明本地对象的问题.我已经是本地的,它实际上在某些情况下有效,所以我不确定发生了什么.
Cli*_* Ok 10
在我的代码中,当我发生错误时:
{
id : item.code,
text : item.name,
parent : item.parentCode
};
Run Code Online (Sandbox Code Playgroud)
"父母"有一个id指向一个不存在的id.如果一个项目没有父项,则需要父项"#".
所以: