javascript - JavaScript/Angularjs - 根据 JSON 配置查看模板,多次 ng-repeat
问题描述
我有一个 HTML 模板来根据配置显示 JSON 配置的返回
JSON配置:
[
{
label: 'Type of contact',
children: [
{
label: 'Type of prospect',
children: [
{
label: 'Seller'
},
{
label: 'Buyer'
}
]
}
]
}
]
为了显示它,我做了:
<div ng-repeat="item in $ctrl.filtersConfig">
<span>{{ item.label }}</span>
<div ng-repeat="itemChildren in item.children">
<ul>{{ itemChildren.label }}
<div ng-repeat="itemChildrenOfChildren in itemChildren.children">
<li>{{ itemChildrenOfChildren.label }}</li>
</div>
</ul>
</div>
它有效,但问题是我可以有几个深度级别children
,如果我有 10 个深度级别,children
我将不得不做 10 ng-repeat
您是否知道如何以更动态的方式处理此问题?
解决方案
您可以创建一个组件来显示一个子项及其子项。对于每个孩子,组件可以使用自己来显示孩子及其孩子。如果有多个嵌套的子层,性能将很快成为问题,但您可以限制设计一种方法来限制显示的级别。这是一个想法,ng-repeat
无论有多少级别的孩子,都可以在您的视图中处理它:
在顶层使用它:
<ul>
<li>
{{ topLevelObject.label }}
<ul>
<li ng-repeat="child in topLevelObject.children">
<child-display display-object="child"></child-display>
</li>
</ul>
</li>
</ul>
childDisplay.js
angular.module('app') // assumes an app has already been registered
.component('childDisplay', {
bindings: {
displayObject: '<'
},
templateUrl: 'childDisplay.html'
});
childDisplay.html
{{ $ctrl.displayObject.label }}
<ul ng-if="$ctrl.displayObject.children && $ctrl.displayObject.children.length > 0">
<li ng-repeat="child in $ctrl.displayObject.children">
<child-display display-object="child"></child-display>
</li>
</ul>
推荐阅读
- reporting-services - SSRS 使用页脚作为组页脚
- php - 在树枝的 if 条件内使用字符串变量
- scheme - 如何将此函数转换为内联调用
- java - 反序列化 Gson 中的嵌套对象
- flutter - 如何在 TextFormField 中将带空格的文本转换为单个空格?
- python - 在直接运行器中使用 SqlTransform 的 Apache 梁
- reactjs - 使用 react 测试异步组件
- node.js - 无法使用 docker + traefik + nodejs 堆栈获取 /myNodeApp
- react-native - React Native 的 FlatList 是否回收离屏视图组件?
- python - 使用 GPU 训练 tensorflow 模型,然后在同一脚本中使用 joblib 中的 CPU / tensorflow-lite 执行推理