Angular JS 循环遍历控制器中的多维数组
Angular JS Looping through a multidimensional array in the controller
目前,我的范围按以下格式列出。
$scope.test = [
{
group: 'Group1',
groupID:0,
items: [
{id: 0, description: 'Item 1', error: true, groupID:0},
{id: 1, description: 'Item 2', error: true, groupID:0},
{id: 2, description: 'Item 3', error: true, groupID:0},
{id: 3, description: 'Item 4', error: true, groupID:0}
]
},
{
group: 'Group2',
groupID:1,
items: [
{id: 0, description: 'Item 1', error: true, groupID:1},
{id: 1, description: 'Item 2', error: true, groupID:1},
{id: 2, description: 'Item 3', error: true, groupID:1},
{id: 3, description: 'Item 4', error: true, groupID:1}
]
},
{
group: 'Group3',
groupID:2,
items: [
{id: 0, description: 'Item 1', error: true, groupID:2},
{id: 1, description: 'Item 2', error: true, groupID:2},
{id: 2, description: 'Item 3', error: true, groupID:2},
{id: 3, description: 'Item 4', error: true, groupID:2}
]
}
我想要的是遍历控制器内每个父对象中的所有项目对象,并获取值"error"等于 true 的所有项目的总数,并提醒此总数。
目前在控制器内部,我只能遍历数组中的一级对象,因此只能访问"组"和"组ID"。
function myCtrl($scope) {
$scope.test = [{
group: 'Group1',
groupID: 0,
items: [{
id: 0,
description: 'Item 1',
error: true,
groupID: 0
}, {
id: 1,
description: 'Item 2',
error: true,
groupID: 0
}, {
id: 2,
description: 'Item 3',
error: true,
groupID: 0
}, {
id: 3,
description: 'Item 4',
error: true,
groupID: 0
}]
}, {
group: 'Group2',
groupID: 1,
items: [{
id: 0,
description: 'Item 1',
error: true,
groupID: 1
}, {
id: 1,
description: 'Item 2',
error: true,
groupID: 1
}, {
id: 2,
description: 'Item 3',
error: true,
groupID: 1
}, {
id: 3,
description: 'Item 4',
error: true,
groupID: 1
}]
}, {
group: 'Group3',
groupID: 2,
items: [{
id: 0,
description: 'Item 1',
error: true,
groupID: 2
}, {
id: 1,
description: 'Item 2',
error: true,
groupID: 2
}, {
id: 2,
description: 'Item 3',
error: true,
groupID: 2
}, {
id: 3,
description: 'Item 4',
error: false,
groupID: 2
}]
}];
$scope.errors = [];
function innerLoop(obj) {
return function (items) {
for (var i = 0; i < items.length; i++) {
if (items[i].error) {
$scope.errors.push(items[i].error);
}
}
}(obj.items);
}
function loop(obj) {
for (var i = 0; i < obj.length; i++) {
innerLoop(obj[i]);
}
return $scope.errors;
}
loop($scope.test);
alert($scope.errors.length);
}
您可以在视图中使用嵌套的 ng-repeat
。查看示例
function myCtrl($scope){
$scope.multi = [1,2,[3,4,5]] ;
}
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<div ng-app ng-controller="myCtrl">
<div ng-repeat='i in multi'>
<span ng-hide="i.length>1">{{i}}</span>
<div ng-repeat='i2 in i'>
{{i2}}
</div>
</div>
相关文章:
- 将Javascript数组发送到控制器ASP.NET MVC
- 将角度材质设计复选框绑定到控制器中的数组
- $scope$观察数组中的一个特定对象——Angular JS控制器
- 使用查询将对象数组发布到asp.net-mvc控制器操作的正确方法是什么
- 如何将json文件中的数据提取到对象数组中,并在两个控制器之间共享
- 在angularJS中使用模态窗口时,在控制器之间共享对象数组
- Ember.js数组控制器计算属性的复选框
- 使用工厂/服务在控制器AngularJS之间推送数组中的数据
- 如何将从jQuery创建的数组传递给控制器方法
- 作为语法的控制器没有将新的obj传递给数组
- 将选定值数组发送到控制器-MVC
- 如何在Angular中设置异步HTTP服务的回调,以便在不定义数组的情况下在控制器中填充数组
- 我们可以将控制器中的JSON数据(MM/DD/YYYY格式)与今天的's日期,并在数组中显示筛选列表
- ASP.NET MVC:2d数组在从javascript传递到MVC控制器操作后为null
- 使用双向绑定将对象从角度视图动态添加/创建到控制器的数组
- 如何在 Ember 中循环排序的数组控制器.js
- Ember - 绑定到数组控制器中的过滤列表,然后添加新记录
- Ember.js如何在没有 ember 数据的情况下从数组控制器中删除对象
- Ember.js(pre4)数组控制器未保持状态
- Emberjs数组控制器问题