怎么" id"适用于使用JSON填充jsTree

时间:2018-01-04 16:04:31

标签: javascript jquery json jstree

我正在使用替代JSON格式来填充我的jsTree,如此link.

所示

问题是我无法找到" id"属性在jsTree中有效吗?

在我的情况下,父母双方有时会有相同的名字。 (它不理想,但它是一个罕见的场景,弹出,所以我必须处理它)。所以我使用他们独特的" id" s"在树上。现在,如果父母的孩子节点具有相同的" id"作为父节点,不知何故,jsTree在按钮点击时不起作用并且继续显示"正在加载.."消息。

我的JSON:

[
  {
    "id": "3",         //Any value except 3 and 5 works
    "text": "Ford",
    "parent": "3",
    "icon": "fa fa-circle-o"
  },
  {
    "id": "5",        //Any value except 3 and 5 works
    "text": "Fiat",
    "parent": "5",
    "icon": "fa fa-circle-o"
  },
  {
    "id": "3",
    "text": "Cars",
    "parent": "#",
    "icon": "glyphicon glyphicon-triangle-right"
  },
  {
    "id": "5",
    "text": "Cars",
    "parent": "#",
    "icon": "glyphicon glyphicon-triangle-right"
  }
]

我的HTML代码:

 <div id="car-list" class="collapse">
                       #{MyBean.jsonString}
                   </div>
                   <h:outputScript>
                       $(function() {
                           var data1= JSON.parse(document.getElementById("car-list").innerHTML);
                           $('#car-list').jstree({
                               'core': {
                                   'data': data1
                               }
                           });
                       });
                   </h:outputScript>

其中jsonString是一个包含上述json

的String对象

1 个答案:

答案 0 :(得分:3)

在jstree中,每次我有2个相同的键时,我只能看到一个元素而不是2个(用相同的键来讨论元素)。在你的情况下,我想问题是你的节点中有循环所以渲染永远不会结束。我通过从串联创建密钥(parentKey_childKey)来超越我的问题。所以在你的情况下,这将是:

[
  {
    "id": "3_3",         
    "text": "Ford",
    "parent": "3",
    "icon": "fa fa-circle-o"
  },
  {
    "id": "5_5",        
    "text": "Fiat",
    "parent": "5",
    "icon": "fa fa-circle-o"
  },
  {
    "id": "3",
    "text": "Cars",
    "parent": "#",
    "icon": "glyphicon glyphicon-triangle-right"
  },
  {
    "id": "5",
    "text": "Cars",
    "parent": "#",
    "icon": "glyphicon glyphicon-triangle-right"
  }
]

您还可以看到不支持具有相同键的多个节点here