AngularJS:在嵌套ng重复中迭代时计数
AngularJS: Count while iterating in nested ng-repeat
我创建了一个angularjs应用程序,用于打印印度人口统计以及那些具有投票资格的计数值的人,
该应用程序运行良好,但我不知道如何在迭代时获得印度人和符合投票条件的计数
工作演示
<div ng-app='myApp' ng-controller="Controller">
<div ng-init="indiansCount = 0" ng-repeat="emp in records">
<b>Can Vote :</b><br>
<b>Indians :</b> {{getIndiansCount(emp.country, indiansCount)}}
<div ng-repeat="empl in emp">
{{empl.country}}<br>
{{empl.employee.name}}<br>
{{empl.employee.canVote}}
<hr>
</div>
</div>
</div>
有人能告诉我这个的一些建议吗
您的emp.country
是undefined
,因为emp
是员工的集合。你可以这样做:
HTML:
<b>Indians :</b> {{getIndiansCount(emp, indiansCount)}}
JS:
$scope.getIndiansCount = function(employees, count) {
angular.forEach(employees, function(employee) {
if(employee && employee.country === "Indian") {
count++;
}
});
return count;
};
演示
编辑
如果您不想添加循环,您确实可以使用ng-repeat
来执行增量函数。
首先,您需要初始化范围中indianCounts(和voteCounts)的数组:
app.controller('Controller', function ($scope) {
$scope.indiansCount = []; // Like this
$scope.voteCount = [];
...
然后你需要这些功能:
$scope.initCount = function(i) {
$scope.indiansCount[i] = 0;
$scope.voteCount[i] = 0;
}
$scope.incrementCount = function(empl, i) {
if(empl.country === "Indian") {
$scope.indiansCount[i]++;
}
if(empl.employee && empl.employee.canVote === true) {
$scope.voteCount[i]++;
}
};
最后,这里是HTML和所有需要的东西:
<div ng-app='myApp' ng-controller="Controller">
<!-- Here you keep a trace of the current $index with i -->
<div ng-init="initCount(i = $index)" ng-repeat="emp in records">
<b>Can Vote :</b> {{voteCount[i]}}<br>
<b>Indians :</b> {{indiansCount[i]}}
<div ng-repeat="empl in emp" ng-init="incrementCount(empl, i)">
{{empl.country}}<br>
{{empl.employee.name}}<br>
{{empl.employee.canVote}}
<hr>
</div>
</div>
</div>
这是JSFiddle更新的
我已经更新了jsFiddle。
增加了3个过滤器-1.印度人2.CanVote3.印度注意
你可以看到它在这里工作-http://jsfiddle.net/tmu9kukz/7/
过滤器
app.filter("Indian", function() {
return function(records) {
var totalIndianCount = 0;
angular.forEach(records, function(emp, empKey) {
angular.forEach(emp, function(oneEmp, oneEmpKey) {
if (oneEmp.country === "Indian") {
totalIndianCount += 1;
}
});
});
return totalIndianCount;
}
});
app.filter("CanVote", function() {
return function(records) {
var totalCanVote = 0;
angular.forEach(records, function(emp, empKey) {
angular.forEach(emp, function(oneEmp, oneEmpKey) {
if (oneEmp.employee.canVote) {
totalCanVote += 1;
}
});
});
return totalCanVote;
}
});
app.filter("IndianCanVote", function() {
return function(records) {
var totalCanVote = 0;
angular.forEach(records, function(emp, empKey) {
angular.forEach(emp, function(oneEmp, oneEmpKey) {
if (oneEmp.country === "Indian" && oneEmp.employee.canVote) {
totalCanVote += 1;
}
});
});
return totalCanVote;
}
})
HTML
<div> Total Indians : {{records | Indian}} </div>
<div> Total Can Vote : {{records | CanVote}} </div>
<div> Total Can Vote : {{records | IndianCanVote}} </div>
相关文章:
- 正在迭代嵌套关联数组
- 使用 JS 迭代嵌套的 JSON 对象
- 对迭代嵌套对象感到困惑
- 如何延迟迭代嵌套对象
- Javascript-迭代嵌套对象,获取值和链式键
- 如何使用Handlebars迭代嵌套对象
- 迭代嵌套JSON到对象数组(JavaScript)
- 通过javascript/lodash迭代嵌套对象数组
- 迭代嵌套的JSON数组并更改属性的值
- 编写一个递归函数,迭代嵌套循环的深度未知
- 在Jquery asp.net中迭代嵌套循环
- 在JSON中获取子元素/使用jQuery/JS迭代嵌套JSON
- 在React中使用map()来迭代嵌套的Prop
- 用angularjs递归迭代嵌套对象
- 迭代嵌套json对象数组
- 使用Jquery迭代嵌套的JSON并返回匹配的索引
- Nodejs -迭代嵌套JSON数组的正确方法
- 如何迭代嵌套对象并在jsx中呈现
- 如何使用asnyc.js迭代嵌套的JSON值
- 使用oud jQuery在JavaScript中迭代嵌套对象