Ich habe ein Array von Objekten, wobei jedes von ihnen wie diese Struktur aussehen:Jstree: Kann nicht lesen Eigenschaft Kinder von undefined. Timing-Problem?
var data = [{
"code" : "i1",
"name" : "Industry 1",
"parentCode" : "i0"
},
{
//and more items just like that one
}];
so dass ich jstree
bin mit einer Hierarchieansicht zu bauen. Da jstree
id
und text
braucht, Karte ich die data
Array wie folgt:
datatree = $.map(data, function (item) {
return {
id : item.code,
text : item.name,
parent : item.parentCode
};
});
Und dann initialisieren ich den eigentlichen Baum in meinem hierarchy
div:
$('#hierarchy').jstree({
"core": {
"themes": {
"variant": "large"
},
"data": datatree,
},
'check_callback': true,
"checkbox": {
"keep_selected_style": false
},
"plugins": ["wholerow", "search", "unique"]
});
Dieser den Baum baut und funktioniert gut, wenn die Original Array ist ziemlich einfach, vielleicht ein oder zwei Ebenen tief der Elternschaft. wenn ich mit einem alternativen Array Build jedoch teste genau die gleiche Weise, aber mit 5 Stufen parentages, wirft die Konsole einen Fehler:
Uncaught TypeError: Cannot read property 'children' of undefined
Und es zeigt auf diese Zeile in dem jstree
Original-Code:
k[c[o].parent.toString()].children.push(c[o].id.toString()),
Ich habe den Verdacht, dass es ein Timing-Problem ist, wie in jstree
nicht in der Lage, das Children-Array zu erstellen, da noch ausstehende Elemente geladen werden müssen. Aber ich könnte mich in meiner Annahme irren.
Wie kann es sein, dass der Code perfekt für Arrays mit einfachen Elternteilen funktioniert, aber es bricht, wenn es mehrere Elternebenen gibt? Ist es nur Timing, wie ich denke, oder es könnte tiefere Probleme geben?
Ich habe gelesen this question, aber es scheint, dass der Benutzer zunächst mit AJAX arbeitete und löste das Problem, ein lokales Objekt zu deklarieren. Meins ist bereits lokal und es funktioniert in einigen Fällen, so dass ich nicht sicher bin, was vor sich geht.
ist es am besten, wenn Sie die Fehler in einem jsFiddle (oder in einem runnable Schnipsel hier auf SO) reproduzieren. Um hier Abhilfe zu schaffen, ist es notwendig, ein Gerät zu haben, gegen das man debuggen kann. – Tomalak
Können Sie ein Beispiel für ein mehrstufiges Quell-Array veröffentlichen, das nicht funktioniert? –