HTML
<tr ng-repeat-start="marks in pagedItemss">
<td>
<input type="text" ng-model="marks.aaa" ng-pattern="/^[0-9]*$/" maxlength="3">
</td>
<td>
<input type="text" ng-model="marks.bbb" ng-pattern="/^[0-9]*$/" maxlength="3">
</td>
<td>
<span ng-model="sum" ng-bind="calculateSum()"></span>{{sum ? sum : 0}}
</td>
</tr>
CONTROLLER
$scope.calculateSum = function () {
var sum = 0;
for (var i = 0;i<$scope.pagedItemss.length;i++)
{
sum += $scope.pagedItemss[i]["aaa"]+$scope.pagedItemss[i]["bbb"];
}
$scope.sum=sum;
return sum;
}
ng-model
无效的总和。我将值设为(aaa:25,bbb:30)
,但它会显示并排的值,例如02530
。
答案 0 :(得分:0)
当您使用input
获取type="text"
元素的值时,该值将为String
。
在JS中,+
运算符连接字符串:
0 + '25' + '30' = '02530'
一种可能的解决方法是将输入框更改为number
:
<input type="number" ...>
或者你可以在操作之前将文本值转换为Number
(有很多方法可以做到这一点):
$scope.calculateSum = function () {
var sum = 0;
for (var i = 0;i<$scope.pagedItemss.length;i++)
{
sum += Number($scope.pagedItemss[i]["aaa"])+Number($scope.pagedItemss[i]["bbb"]);
}
$scope.sum=sum;
return sum;
}
答案 1 :(得分:0)
您需要在添加之前将字符串值转换为整数。 例如:
var a = "20", b="30";
var c = a+b
// c will be 2030
在添加之前获取正确的值parseInt()两个值。
var c = parseInt(a)+parseInt(b);
// c will be 50