AngularJS ng-repeat 通过复杂和动态的 JSON 数组
Posted
技术标签:
【中文标题】AngularJS ng-repeat 通过复杂和动态的 JSON 数组【英文标题】:AngularJS ng-repeat through complex and dynamic JSON Array 【发布时间】:2021-01-19 23:27:06 【问题描述】:我正在尝试使用 ng-repeat
选项从 JSON 数组向用户显示内容。 JSON Array
是动态创建的,所以我有点困惑如何向用户显示相同的内容。
JSON ARRAY
的语法如下,COMPLEX key
的内容可以动态增加或减少:
jsonList = [
name : "AB",
local : "CD",
complex : [
name : "EF",
local : "GH",
complex : [
name : "IJ",
local : "LL".
complex : ........
]
]
,
name : "PQ",
local : "RS",
complex : [
name : "TU",
local : "VW",
complex : [
name : "XY",
local : "Z1".
complex : ........
]
]
......
];
我只是很困惑如何向用户显示这个。
我希望它看起来像这样,用户可以使用Add Another
选项在每一步添加complex
值:
我真的很困惑如何自动将值存储在JSON Array
中并使用ng-repeat
循环并自动显示给用户。由于JSON Array
不是固定的,并且在每个点上都可能会有所不同,因此有人可以帮助我了解如何处理此问题的一些逻辑。
我试图在html Table
中显示,但在有这么多complex
对象时如何循环感到困惑。
【问题讨论】:
【参考方案1】:我会使用自引用组件。根据您的数据,我在这里有一个示例。请注意,组件在其模板中使用自身。这样可以确保它可以永远持续下去
function myComponentController()
this.addNode = function(el)
el.complex.push(
name: "New name",
local: "New local",
complex: [],
);
const myComponentConstructor =
controller: myComponentController,
controllerAs: "$ctrl",
bindings:
data: '=',
,
template: `
<div ng-repeat="el in $ctrl.data" class="block">
<span>Name: el.name</span>
<my-component data="el.complex"></my-component>
<button ng-click="$ctrl.addNode(el)">Add another</button>
</div>
`,
const app = angular
.module("app", [])
.component("myComponent", myComponentConstructor);
.block
border: solid 1px red;
padding: 5px;
margin: 5px;
<script src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.7.5/angular.min.js"></script>
<div ng-app="app">
<my-component data='[
name: "AB",
local: "CD",
complex: [
name: "EF",
local: "GH",
complex: [
name: "IJ",
local: "LL",
complex: []
]
]
,
name: "PQ",
local: "RS",
complex: [
name: "TU",
local: "VW",
complex: [
name: "XY",
local: "Z1",
complex: []
]
]
]'></my-component>
</div>
【讨论】:
以上是关于AngularJS ng-repeat 通过复杂和动态的 JSON 数组的主要内容,如果未能解决你的问题,请参考以下文章
在 AngularJS1 的一个 ng-repeat 指令中使用多个 limitTo 过滤器
在 AngularJs 中迭代 ng-repeat 仅 X 次