Привязка родительского и дочернего списка json к jstree - PullRequest
0 голосов
/ 30 декабря 2018

У меня есть список вложенных объектов (parent-child), и я использую плагин jstree для их иерархического отображения.

db list:

 ID  Name  ParentId

    1   A     NULL
    2   B     NULL
    5   a1    1
    6   b1    2
    9   a11   5
    10  a12   5
    11  b12   6

преобразованный список как json со своими детьми:

 [{"children":[{"children":[{"children":[],"id":9,"text":"a11","ParentId":5},{"children":[],"id":10,"text":"a12","ParentId":5}],"id":5,"text":"a1","ParentId":1}],"id":1,"text":"A","ParentId":null},{"children":[{"children":[{"children":[],"id":11,"text":"b12","ParentId":6}],"id":6,"text":"b1","ParentId":2}],"id":2,"text":"B","ParentId":null},{"children":[{"children":[],"id":9,"text":"a11","ParentId":5},{"children":[],"id":10,"text":"a12","ParentId":5}],"id":5,"text":"a1","ParentId":1},{"children":[{"children":[],"id":11,"text":"b12","ParentId":6}],"id":6,"text":"b1","ParentId":2},{"children":[],"id":9,"text":"a11","ParentId":5},{"children":[],"id":10,"text":"a12","ParentId":5},{"children":[],"id":11,"text":"b12","ParentId":6}]

ajax:

  success: function (x) {
     $('#jstree').jstree({
                  'core': {
                        'data': jQuery.parseJSON(x)
                           }
     });  }      

Проблема заключается в том, когдаобъекты json сначала загружаются на страницу, jstree отображает все узлы, даже их дочерние элементы;на том же уровне.Только если я трачу родительский узел, тогда дети правильно попадают под своего родителя и исчезают с первого уровня.Почему это происходит?Спасибо.

1 Ответ

0 голосов
/ 04 января 2019

Хотя структура данных JSON представлена ​​в правильном формате, назначенные значения id не являются уникальными.Некоторые из узлов в корне имеют тот же идентификатор, что и некоторые из вложенных потомков.Это создает конфликт внутри данных дерева, так как jsTree требует уникальных идентификаторов.Если вы можете вычислить уникальные значения идентификаторов для узлов в вашем дереве, это будет работать.

...