javascript – Jstree:无法读取未定义的属性子项.时间问题?

我有一个对象数组,其中每个对象看起来像这样的结构:

var data = [{
"code" : "i1","name" : "Industry 1","parentCode" : "i0"
},{
//and more items just like that one
}];

所以我使用jstree来构建层次结构视图.由于jstree需要id和text,我像这样映射数据数组:

datatree = $.map(data,function (item) {

        return {
            id : item.code,text : item.name,parent : item.parentCode

        };

    });

然后我初始化我的层次结构div中的实际树:

$('#hierarchy').jstree({

    "core": {
        "themes": {
            "variant": "large"
        },"data": datatree,},'check_callback': true,"checkBox": {
        "keep_selected_style": false
    },"plugins": ["wholerow","search","unique"]
});

当原始数组非常简单时,这可以构建树并且工作正常,可能是父级的一个或两个级别.但是,如果我使用完全相同的方式测试替代数组,但是有5个级别的父级,则控制台会抛出错误

Uncaught TypeError: Cannot read property 'children' of undefined

它指向jstree原始代码中的这一行:

k[c[o].parent.toString()].children.push(c[o].id.toString()),

我怀疑这是一个计时问题,因为jstree无法构建子数组,因为仍有待加载的项目.但我的假设可能是错的.

对于具有简单父级的数组,代码如何才能完美地运行,但是当存在多个父级时它会中断?它只是我想的时间,还是可能有更深层次的问题?

我已阅读this question,但似乎用户最初使用AJAX并解决了声明本地对象的问题.我已经是本地的,它实际上在某些情况下有效,所以我不确定发生了什么.

最佳答案
在我的代码中,当我发生错误时:

{
  id : item.code,parent : item.parentCode
};

“父母”有一个id指向一个不存在的id.如果一个项目没有父项,则需要父项“#”.
所以:

>检查父null或未定义的项目;
>检查父项没有相应父项的项目

相关文章

页面搜索关键词突出 // 页面搜索关键词突出 $(function () {...
jQuery实时显示日期、时间 html: <span id=&quot...
jQuery 添加水印 <script src="../../../.....
中文:Sys.WebForms.PageRequestManagerParserErrorExceptio...
1. 用Response.Write方法 代码如下: Response.Write(&q...
Jquery实现按钮点击遮罩加载,处理完后恢复 思路: 1.点击按...