javascript - Angularjs - 复选框 - 计算多个选定/未选定的项目

标签 javascript angularjs checkbox

如何使用 angularjs 计算选中/未选中复选框项的数量?

我的html

    <label class="col-xs-5  pull-left" style="font-weight: bold; margin-left: 4px; margin-top: -17px;" >You have choose <font size="3" color="green">{{checkedResult}}</font> Customer(s)</label>

<tr ng-repeat="item in $data " >
             <td width="30" style="text-align: left" header="\'smsChkbx\'">
           <label>
            <input type="checkbox" class="ace" name="someList[]" value="{{item.somename}}" ng-model="checkboxes.items[item.somename]" />

复选框功能

 $scope.$watch('checkboxes.items', function(values) {
                        if (!$scope.mydata) {
                            return;
                        }
                        var checked = 0,
                            unchecked = 0,
                            total = $scope.mydata.length;
                        angular.forEach($scope.mydata, function(item) {
                            checked += ($scope.checkboxesSms.items[item.somename]) || 0;
                            unchecked += (!$scope.checkboxesSms.items[item.somename]) || 0;
                        });
                        if ((unchecked == 0) || (checked == 0)) {
                            $scope.checkboxes.checked = (checked == total);
                        }

                        **if(checked != 0 && unchecked != 0){
                            $scope.checkedResult++;
                        }**                    
                        $scope.tableParamsSms.reload();                                                
                         console.log($scope.checkedResult);
                        console.log((checked != 0 && unchecked != 0));
                        angular.element(document.getElementById("select_Sms")).prop("indeterminate", (checked != 0 && unchecked != 0));
                    }, true); 

当我第一次检查时正确计数,问题是当我取消选中选中的时它也会计数

还想在通过多个检查选项检查时进行计数

最佳答案

您应该在复选框中单击一下并触发一个事件。

例如: ng-click="selectOrDeselect(item)"

然后在该函数中执行类似的操作以将其添加到列表中或将其从列表中删除。

$scope.selectOrDeselect = function(item) {
  var index = $scope.selectedItems.indexOf(item);
  if (index === -1) {
    $scope.selectedItems.push(item);
  } else {
    $scope.selectedItems.splice(index, 1);
  }
};

然后有一个var count = $scope.selectedItems.length

关于javascript - Angularjs - 复选框 - 计算多个选定/未选定的项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36913271/

相关文章:

android - 如何从 RecyclerView 获取特定的 View 复选框?

javascript - 复选框绑定(bind)/解除绑定(bind)逻辑

javascript - 使用 document.getElementsByClassName 更改背景图像

javascript - 提取一个对象的属性,然后将其拼接到另一个对象中?

javascript - 在 AngularJs 中验证后隐藏表单

javascript - 在 AngularJS 的 Controller 中调用 JSON 的值,以便我可以编辑它

javascript - AngularJS 和 ui-router 登录 : max iteration reached

jquery - 进行选中/取消选中复选框操作的更好方法

javascript - 如何在 Highcharts 散点图中的工具提示中隐藏系列名称以进行线性回归

javascript - 在 Bootstrap 选项卡内时,Codemirror AngularJS 模型绑定(bind)中断