Angularjs ng-sum sum字段

时间:2016-11-10 09:38:14

标签: angularjs angularjs-ng-value

我有这样的输入

<input type="text" ng-model="tbl.Public">
<input type="text" ng-model="tbl.Private">
<input type="text" ng-value="tbl.Public--tbl.Private" ng-model="tbl.Total">

上面的表单将正常工作它会将Public和Private值相加并将其放在tbl.Total字段中。我的问题是编辑形式,其中 tbl.Total,tbl.Public,tbl.Private 的值是从数据库中分配的。

JS

$scope.tbl.Public=10;
$scope.tbl.Private=25;
$scope.tbl.Total=35;

现在,当我在表单中更改tbl.Public或tbl.Private的值时从js中赋值时,它不会影响tbl.Total它应该将这两个值相加并将其放在tbl.Total字段中。 感谢您的任何帮助和建议。

2 个答案:

答案 0 :(得分:2)

ng-value通常用于radiobuttons和选项元素,它不适合您的用例。

更好的做法是实施与ng-change结合的updateTotal()功能。我还建议您将input类型更改为number,这样您就不会允许用户对文字求和。

<input type="number" ng-model="tbl.Public" ng-change="updateTotal();">
<input type="number" ng-model="tbl.Private" ng-change="updateTotal();">
<input type="number" ng-model="tbl.Total">

在您的控制器中:

$scope.updateTotal = function() {
  $scope.tbl.Total = $scope.tbl.Public + $scope.tbl.Private;
}

答案 1 :(得分:0)

这应该是这样的,以防止连接

$scope.updateTotal = function() { 
  var Public = Number($scope.tbl.Public || 0); 
  var Private = Number($scope.tbl.Private || 0); 
  $scope.tbl.Total = Public + Private; 
}