2016-08-03 10 views
2

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.

+0

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

+0

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? –

+0

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. –

Antwort

-2

Ich verstehe Sie nicht in Frage stellen, aber Sie können die einfachste Art und Weise verwenden, um zu beheben und das Debugging: console.log('Some label', variable); es in jedem Ort verwenden, wo Sie die if ... else oder for (i =0, ...) oder in einer anderen Problem für Sie die Orte haben. Es hilft Ihnen, Fehler oder Fehler zu finden.

+0

Vielen Dank für Ihre Antwort. Ich weiß, das ist sehr unklar, aber Ihr Tipp könnte helfen. –

Verwandte Themen