ng-click for checkbox angularjs

时间:2016-12-09 09:34:09

标签: jquery angularjs checkbox

我正在创建一个网络应用,如果有10个数据,我现在可以在我的表中获取费用信息

1)100

2)200

3)300

4)200

5)300

6)400

7)500

8)600

9)900

10)200

所有这些数据都将显示给用户,每个数据都有一个复选框,如

<td>{{a.salary}}</td>
<td><input type="checkbox" ng-click="updatefunction(a)" />

我的复选框正在调用angularjs的控制器

$scope.updatefunction = function (param) {
            $scope.updateparam = param;
            console.log($scope.updateparam.salary);
            $scope.totalsalary = Number($scope.totalsalary) + Number($scope.updateparam.salary);
            console.log($scope.totalsalary);
        }

在ng-click上将调用此控制器,但如果用户单击两次,则值递增两次,如果我使用ng-checked(1到10),所有条目都在递增,我需要做什么,我想要增加,但如果用户取消选中或多次点击(该值应该减少),

2 个答案:

答案 0 :(得分:1)

您需要为复选框字段(ng-model)设置一个标记。

<强> HTML

<input type="checkbox" ng-model="exp.checked" 
             data-ng-click="calculateTotal(exp)"/>{{exp.salary}}

<强> JS

$scope.calculateTotal = function(exp){
    if(exp.checked){
      $scope.total += exp.salary;
    }else{
      $scope.total -= exp.salary;
    }
  }

您的解决方案是here

答案 1 :(得分:0)

您需要在复选框中使用ng-model

<td><input type="checkbox" ng-click="updatefunction(a)" ng-model="a.checked" />

最初在您的控制器集中

a.checked=false;

因为所有复选框都未选中

$scope.updatefunction = function (param) {
if(param.checked){
            $scope.updateparam = param;
            console.log($scope.updateparam.salary);
            $scope.totalsalary = Number($scope.totalsalary) + Number($scope.updateparam.salary);
            console.log($scope.totalsalary);
}else{
     $scope.totalsalary = Number($scope.totalsalary)  -Number($scope.updateparam.salary);

}
        }

希望这能解决您的问题。如果在重新加载页面后的最后一个,您的checked值未被选中,并且已经选中了任何复选框,那么最后选中check = false