Ich versuche, eine Baumstruktur von Dateien (für eine Webanwendung) mithilfe von JsTree zu erstellen.Erstellen Sie ein Array in JavaScript, um jsTree zu füllen
I haben verschiedene Ebenen:
Ebene 1:dimension
Stufe 2:hierarchie
(dimension
's Kind)
Stufe 3:niveau, Ordre_niveau = 1
(hierarchie
' s Kind)
Ebene n:niveau, Ordre_niveau = n
(niveau ordre (n-1)
‚s Kind)
ich bei der Besetzung dimension
und hierarchie
erfolgreich zu sein, aber all meine niveau
auf dem gleichen Niveau sind, weil die Informationen von ordre
in dem gleichen Objekt wie die Informationen von niveau
sind.
Hier ist mein Code:
var jsTreeData = [];
//"dimensions"
for (var i = 0; i < dimension.length; i++) {
jsTreeData.push({
'text': dimension[i].dimension_Nom_dimension,
'type': 'dimension',
'data': dimension[i],
'children': []
});
//"hiérarchies"
var x = -1;
for (var j = 0; j < hierarchie.length; j++) {
if (hierarchie[j].dimension_Dimension_id == jsTreeData[i].data.dimension_Dimension_id) {
jsTreeData[i].children.push({
'text': hierarchie[j].hierarchie_Nom_hierarchie,
'type': 'hierarchie',
'data': hierarchie[j],
'children': []
});
x = x + 1;
//"niveaux"
for (var k = 0; k < niveau.length && x < (jsTreeData[i].children.length); k++) {
for (var l = 0; l < niveau.length && x < (jsTreeData[i].children.length); l++) {
if (niveau[k].hierarchie_Hierarchie_id == jsTreeData[i].children[x].data.hierarchie_Hierarchie_id && niveau[k].niveau_Niveau_id == niveau[l].niveau_Niveau_parent_id && niveau[k].niveau_Ordre_niveau == 1 && niveau[l].niveau_Ordre_niveau == 2) {
jsTreeData[i].children[x].children.push({
'text': niveau[k].niveau_Nom_niveau,
'type': 'niveau',
'data': niveau[k],
'children': ({
jsTreeData: ({
'text': niveau[l].niveau_Nom_niveau,
'type': 'niveau',
'data': niveau[l]
})
})
});
}
}
}
}
}
}
Das Ergebnis ist, dass die Jstree Anzeige alle dimension
, alle hierarchie
aber nur die niveau, Ordre_niveau = 1
und nicht die niveau, Ordre_niveau = 2
usw.
Es ist wie das Eigentum children
von Jstree funktioniert nicht.
Nicht sicher, das wird helfen, aber es gibt 2 Möglichkeiten, wie Sie Knoten an JsTree übergeben können. Einer ist mit Kindern, die Sie verwenden; Anderes ist das alternative Format wie auf dieser URL https://www.jstree.com/docs/json/. Sie müssen die ID und das Elternteil selbst angeben und somit funktionieren. – AbhilashK
Ich habe versucht, aber jedes Mal, wenn ich diesen Fehler habe: "Kann nicht lesen Eigenschaft 'String' von undefined" im JsTree-Code: // 2) füllen Kinder (foreach) für (i = 0, j = dat.length; i < j; i ++) {\t \t \t \t \t \t \t m [dat [i] .parent.toString()] children.push (dat [i] .id.toString (.)); // befüllen parent.children_d p.children_d.push (dat [i] .id.toString()); \t \t \t \t \t \t}) Weißt du warum? –
Ok ich sah was das Problem war. Wenn es nur eine Daten mit "undefiniertem" Eltern gibt und es keinen Code für diese Ausnahme gibt, sendet der JsTree den Fehler. –