我有如下对象的数组。
$scope.students = [{'isSelected': true}, {'isSelected': true}, {'isSelected': false}, {'isSelected': true}, {'isSelected': true}, ]
如何获得isSelected属性设置为的计数项目true?
isSelected
true
问题是$scope.students从REST api获取的,只是循环$ scope.students变量不起作用,因为undefined直到请求完成,该变量才起作用,因此循环代码错误地指出$scope.students is not defined。
$scope.students
undefined
$scope.students is not defined
我尝试使用,$watch但是在那种情况下,我必须在watch指令下定义循环,并且仅在定义$ scope.students时才工作一次,此后循环就无法正常工作,因为$ scope.students本身没有改变。
$watch
您可以将以下方法添加到控制器中。selectedStudentsCount您范围内的变量将保留所有 选定学生的 数量(其中isSelected设置为true)。
selectedStudentsCount
功能计数 选定的用户 中angular.forEach只有将被执行students不为空。否则将返回 空 students变量。 selectedStudentsCount``0
angular.forEach
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>