我有对象的数组,每个人看起来是这样的结构:Jstree:无法读取未定义的属性子项。定时问题?
var data = [{
"code" : "i1",
"name" : "Industry 1",
"parentCode" : "i0"
},
{
//and more items just like that one
}];
所以我用jstree
建立一个层次视图。由于jstree
需要id
和text
,我的data
阵图是这样的:
datatree = $.map(data, function (item) {
return {
id : item.code,
text : item.name,
parent : item.parentCode
};
});
然后我初始化我hierarchy
格内的实际树:
$('#hierarchy').jstree({
"core": {
"themes": {
"variant": "large"
},
"data": datatree,
},
'check_callback': true,
"checkbox": {
"keep_selected_style": false
},
"plugins": ["wholerow", "search", "unique"]
});
此构建树和工作正常时,原始数组非常简单,可能有一两级深度的亲子关系。但是,如果我用另一种阵列构建完全相同的方式,但5级parentages的测试,控制台抛出一个错误:
Uncaught TypeError: Cannot read property 'children' of undefined
而且它指向这个行中的jstree
原代码:
k[c[o].parent.toString()].children.push(c[o].id.toString()),
我怀疑它是一个时间问题,因为jstree
无法构建子数组,因为仍有待加载的项目。但是我的假设可能是错误的。
怎么会这样,该代码完全适用于简单parentages阵列,但是当有多个父级别它打破?这只是我猜测的时机,还是可能存在更深层次的问题?
我已阅读this question,但似乎用户最初使用AJAX工作,并解决声明一个局部对象的问题。矿井已经是本地的,在某些情况下它确实有效,所以我不确定发生了什么。
如果您重现(SO上或者在这里可运行的代码段)在的jsfiddle错误是最好的。有一个夹具来调试是必要的,以帮助你在这里。 – Tomalak
你可以发布一个不起作用的多级源数组的例子吗? –