我按照以下教程在Angular中添加了两个值; Addition of Two Numbers in AngularJS
但是现在我必须在ng-repeat中总结动态文本框值。
我有以下代码
HTML代码
......
<table>
<tr>
<th>Name</th>
<th>Days</th>
</tr>
<tr ng-repeat="si in serImp">
<td>{{si.Name}}</td>
<td><input type="number" ng-model="si.Days" /></td>
</tr>
</table>
.......
<button ng-click="sum()">Calculate</button>
.......
JS代码
.........
$scope.serImp = [];
$scope.serImp = data;
// here data is object contain multiple Name+Durations e.g.
/*data =
[0]
Name:"first"
Days: 1
[1]
Name:"second"
Days: 2
[2]
Name:"third"
Days: 3*/
$scope.sum = function () {
// sum code goes here
}
........
我的问题是:如何从ng-model =“si.Days”中获取值/数字的总和
答案 0 :(得分:1)
使用reduce来总结所有日子。
使用ng-model修改值时,您正在操作$scope.serImp
数组。然后,您可以使用这些值来计算总和。
$scope.sum = function () {
return $scope.serImp.reduce(function(prv, cur) {
return prv.Days + cur.Days;
});
}
Reduce采用一个数组,并通过将一个函数应用于其所有元素将其减少为一个值。在我们的例子中,只是简单地将所有日子相加。
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/Reduce
答案 1 :(得分:1)
我将创建将返回所有Days of total&amp;将直接绑定到html
{{totalDays()}}
<强>代码强>
$scope.totalDays = function(){
var totalDays = 0;
angular.forEach( $scope.serImp, function(si){
if(si.Days && !isNaN(si.Days)){
totalDays += Number(si.Days);
}
})
}