json - 如何在 Angular 5 中使用嵌套的 JSON 数据填充多级 Kendo Treeview

标签 json kendo-ui-angular2 kendo-treeview

我正在尝试将嵌套的 JSON 数据填充到多级 KendoTreeView 中。

public nodes: any[] = [{
      "moduleId": 1,
      "moduleName": "Mode",
      "features": [
        {
          "featureId": 2,
          "featureName": "F1",
          "subFeatures": [],
          "privileges": [
            {
              "privilegeId": 2,
              "privilegeName": "P2"
            },
            {
              "privilegeId": 12,
              "privilegeName": "P2E"
            }
          ]
        },
        {
          "featureId": 3,
          "featureName": "F2",
          "subFeatures": [
            {
              "featureId": 4,
              "featureName": "F21",
              "subFeatures": [],
              "privileges": [
                {
                  "privilegeId": 4,
                  "privilegeName": "P4"
                }
              ]
            }
          ],
          "privileges": [
            {
              "privilegeId": 3,
              "privilegeName": "P3"
            }
          ]
        }
    ]
}]

使用此代码我只能看到一层树。不确定如何在这种情况下使用 [hasChildren]="hasChildren"。

`到目前为止,我已经尝试过在 Kendo TreeView 中填充一些数据。
数据看起来像这样。
<kendo-treeview [nodes]="node"
                [textField]="[ 'moduleName','featureName']"
                [childrenField]="['features']"
                kendoTreeViewExpandable
                kendoTreeViewHierarchyBinding>
</kendo-treeview>`

提前感谢您的帮助。

最佳答案

树组件仅直接支持节点名称的一个字段。因此,您必须使用 Node 模板来查找用于显示节点名称的正确属性。
此外,对于 children 和 haschildren,您必须添加一些代码来说明哪个属性包含子项以及该属性是否具有内容。
所以你的结构是:

Module
  Feature
    Subfeature

每个级别都必须由自定义代码支持。

模板:
 <kendo-treeview
     textField="moduleName"
     [nodes]="nodes"
     [children]="children"
     [hasChildren]="hasChildren"
 >
 <ng-template kendoTreeViewNodeTemplate let-dataItem>
        {{dataItem.moduleName || dataItem.featureName}}
    </ng-template>
 </kendo-treeview>

有 child :
 public hasChildren = (dataitem: any): boolean => !!dataitem.features || !!dataitem.subFeatures;

children :
 public children = (dataitem: any): Observable<any[]> => of(dataitem.features || dataitem.subFeatures);

我准备了一个适用于您的数据的 Stackblitz

关于json - 如何在 Angular 5 中使用嵌套的 JSON 数据填充多级 Kendo Treeview ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58644383/

相关文章:

ruby-on-rails - 如何将 JBuilder View 的 JSON 表示形式呈现为字符串?

java - 将模型类中的数据赋值给数组,并根据传入的数据发送通知给用户

kendo-grid - Kendo UI for Angular Grid Detail 展开/折叠按钮移至右侧?

javascript - Accordion 中的刷新按钮

angular - 错误 '' 标识符 'territoryFromName' 已声明“在使用 Angular 和 Kendo UI 构建的 AOT 上

kendo-ui - 如何制作 kendo-angle-datepicker 仅显示年份

function - Kendo Treeview 模板 : d. MyFunction 不是函数

kendo-ui - filterable 不适用于网格,如果我适用,如果网格中的其他条件

jquery获取<li>项上data-id的值

php - 从数据库中的产品生成 JSON,只取最后一行