一尘不染

获取数组中具有某些属性的项目数

angularjs

我有如下对象的数组。

$scope.students = [{'isSelected': true},
    {'isSelected': true},
    {'isSelected': false},
    {'isSelected': true},
    {'isSelected': true},
]

如何获得isSelected属性设置为的计数项目true

更新:

问题是$scope.students从REST api获取的,只是循环$
scope.students变量不起作用,因为undefined直到请求完成,该变量才起作用,因此循环代码错误地指出$scope.students is not defined

我尝试使用,$watch但是在那种情况下,我必须在watch指令下定义循环,并且仅在定义$
scope.students时才工作一次,此后循环就无法正常工作,因为$ scope.students本身没有改变。


阅读 302

收藏
2020-07-04

共1个答案

一尘不染

您可以将以下方法添加到控制器中。selectedStudentsCount您范围内的变量将保留所有 选定学生的
数量(其中isSelected设置为true)。

功能计数 选定的用户angular.forEach只有将被执行students不为空。否则将返回 students变量。
selectedStudentsCount``0

$scope.selectedStudentsCount = function() {
    var count = 0;
    angular.forEach($scope.students, function(student){
        count += student.isSelected ? 1 : 0;
    });
    return count; 
}

请注意,这selectedStudentsCount是一个函数,因此必须()在模板中使用来调用,例如

<h2>Total selected students: {{selectedStudentsCount()}}</h2>
2020-07-04