在JavaScript中构建一个数组来填充jsTree

时间:2016-08-03 12:32:37

标签: javascript json jstree

我正在尝试使用JsTree构建一个文件树(用于Web应用程序)。

我有不同的级别:

等级1: dimension

第2级: hierarchiedimension的孩子)

第3级: niveau, Ordre_niveau = 1hierarchie的孩子)

等级n: niveau, Ordre_niveau = nniveau ordre (n-1)的孩子)

我成功填写dimensionhierarchie,但我的所有niveau都处于同一级别,因为ordre的信息与信息相同niveau

这是我的代码:

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]
                })
              })
            });
          }
        }
      }
    }
  }
}

结果是Jstree显示所有dimension,所有hierarchie但只显示niveau, Ordre_niveau = 1而不显示niveau, Ordre_niveau = 2等。

这就像Jstree的children财产没有用。

1 个答案:

答案 0 :(得分:-2)

我不理解您的问题,但您可以使用最简单的方法进行修复和调试:console.log('Some label', variable);在您拥有if ... elsefor (i =0, ...)或其他地方的地方使用它你的其他问题。它可以帮助您找到错误或错误。