通过 ng-repeat 访问嵌套数组
Accessing nested arrays through ng-repeat
是否可以使用 ng-repeat 遍历此数组?
{
"classess": [
"Upper sixth form",
"Lower sixth form"
{
"group": "Year 11",
"students": [
"rob",
"lisa",
"natalie",
"greg"
]
},
{
"group": "Year 10",
"students": [
"tom",
"ross",
"james",
"nicola"
]
}
]
}
理想情况下,像这样格式化它会很棒:
- Upper sixth form
- Lower sixth form
- Year 11
- rob
- lisa
- natalie
- greg
- Year 10
- tom
- ross
- james
-nicola
我无法更改数据的显示方式,这是可以通过 ng-repeat 完成还是必须在控制器中进行过滤?
编辑:
这就是我现在的 HTML 的样子
<ul>
<li ng-repeat="class in classes">
{{ class }}
<ul ng-if="class.group">
<h6>{{ class.group }}</h6>
<li ng-repeat="student in class.students">
{{student}}
</li>
</ul>
</li>
</ul>
但这就是它产生的结果:
- Upper sixth form
- Lower sixth form
- {"group":"Year 11","ingredients":["rob","lisa","natalie","greg"]}
- Year 11
rob
lisa
natalie
greg
- {"group":"Year 10","ingredients":["tom","ross","james","nicola"]}
- Year 10
tom
ross
james
nicola
使用 ng-repeat
如果你掌握了循环,你可以使用 ng-repeat。您的 html 将如下所示(假设您已正确添加 angular 和您的控制器等)
<div ng-repeat="class in classes">
{{class.group}}
<div ng-repeat="student in class">
<p>{{student}}</p>
</div>
</div>
可能需要一些调整,我可以使用 JSFiddle 来完成,但这应该让您了解如何获得所需的列表。
我设法通过这个获得了想要的输出:
<ul>
<li ng-repeat="class in classes">
<div ng-if="!class.group">
{{ class }}
</div>
<div ng-if="class.group">
{{ class.group }}
<ul>
<li ng-repeat="student in class.students">
{{student}}
</li>
</ul>
</div>
</li>
</ul>
我会尝试遵循 HTML 以保持它的紧凑性和可读性,而不添加任何实际上没有目的的 HTML 元素,例如用于样式(在您的示例中为 div
):
<ul>
<li ng-repeat="class in classes">
{{class.group ? class.group : class}}
<ul ng-if="class.group">
<li ng-repeat="student in class.students">
{{student}}
</li>
</ul>
</li>
</ul>
是否可以使用 ng-repeat 遍历此数组?
{
"classess": [
"Upper sixth form",
"Lower sixth form"
{
"group": "Year 11",
"students": [
"rob",
"lisa",
"natalie",
"greg"
]
},
{
"group": "Year 10",
"students": [
"tom",
"ross",
"james",
"nicola"
]
}
]
}
理想情况下,像这样格式化它会很棒:
- Upper sixth form
- Lower sixth form
- Year 11
- rob
- lisa
- natalie
- greg
- Year 10
- tom
- ross
- james
-nicola
我无法更改数据的显示方式,这是可以通过 ng-repeat 完成还是必须在控制器中进行过滤?
编辑: 这就是我现在的 HTML 的样子
<ul>
<li ng-repeat="class in classes">
{{ class }}
<ul ng-if="class.group">
<h6>{{ class.group }}</h6>
<li ng-repeat="student in class.students">
{{student}}
</li>
</ul>
</li>
</ul>
但这就是它产生的结果:
- Upper sixth form
- Lower sixth form
- {"group":"Year 11","ingredients":["rob","lisa","natalie","greg"]}
- Year 11
rob
lisa
natalie
greg
- {"group":"Year 10","ingredients":["tom","ross","james","nicola"]}
- Year 10
tom
ross
james
nicola
使用 ng-repeat
如果你掌握了循环,你可以使用 ng-repeat。您的 html 将如下所示(假设您已正确添加 angular 和您的控制器等)
<div ng-repeat="class in classes">
{{class.group}}
<div ng-repeat="student in class">
<p>{{student}}</p>
</div>
</div>
可能需要一些调整,我可以使用 JSFiddle 来完成,但这应该让您了解如何获得所需的列表。
我设法通过这个获得了想要的输出:
<ul>
<li ng-repeat="class in classes">
<div ng-if="!class.group">
{{ class }}
</div>
<div ng-if="class.group">
{{ class.group }}
<ul>
<li ng-repeat="student in class.students">
{{student}}
</li>
</ul>
</div>
</li>
</ul>
我会尝试遵循 HTML 以保持它的紧凑性和可读性,而不添加任何实际上没有目的的 HTML 元素,例如用于样式(在您的示例中为 div
):
<ul>
<li ng-repeat="class in classes">
{{class.group ? class.group : class}}
<ul ng-if="class.group">
<li ng-repeat="student in class.students">
{{student}}
</li>
</ul>
</li>
</ul>