gpt4 book ai didi

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

转载 作者:数据小太阳 更新时间:2023-10-29 05:57:11 27 4
gpt4 key购买 nike

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

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

所以我正在使用 jstree 来构建层次结构 View 。由于 jstree 需要 idtext,我将 data 数组映射如下:

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

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

};

});

然后我在我的 hierarchy 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,
text : item.name,
parent : item.parentCode
};

你的 parent 有一个不存在的项目的ID。父键必须存在,并且不会接受 false、null、0 或不在数据列表中的 id。如果一个项目没有父项,则父项需要是“#”,即 “parent”: “#”

所以:

  • 检查父项为 null 或 undefined 的项;
  • 在没有相应父项的情况下检查有父项的项

关于javascript - Jstree:无法读取未定义的属性子项。时间问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38520980/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com