javascript - 好奇 angularJs 是否有更好的方法来计算复选框的数量

标签 javascript angularjs

我需要检查是否选中了任何复选框。所以我这样做

self.isButtonEnabled = function() {
  var selectLineCheckboxs = document.getElementsByClassName('selectLineRadioInput'), 
  i = 0, checkboxLength = selectLineCheckboxs.length - 1;

  for (i = 0; i <= checkboxLength; i++) {
    if (selectLineCheckboxs[i].checked) {
      self.selectLineChecked = true;
      break;
    } else {
      self.selectLineChecked = false;
    }
  }
  return self.selectLineChecked;
};

作为返回,如果任何复选框被选中,我得到 true。

很简单,

现在我正在寻找我们是否可以通过任何更好的方法对 angularJs 做同样的事情,我不想在 Angular 中使用 watch() 函数。

最佳答案

我可以帮助您编写一些代码,将其转换为 Angular 方式。

  1. 使用 angular.element(由 jQLite 提供以获取元素)代替 document.getElementsByClassName
  2. 您可以在检查属性是否被选中时使用$filter

代码

self.isButtonEnabled = function() {
    var selectLineCheckboxs = angular.element('.selectLineRadioInput');
    var checkedValues = $filter('filter')(selectLineCheckboxs, { 'checked': true }); //do filtering and contains check value
    self.selectLineChecked = checkedValues.length > 0 ? true : false;
    return self.selectLineChecked;
};

注意:在使用$filter

之前,您应该在您的 Controller 上添加$filter依赖

更新

我建议您创建自己的可用于多种用途的自定义过滤器,或者动态检查属性值是否为真。我知道您的代码与您在回答中提出的问题相同,但我将您的一些代码作为可重用组件放置,它可以动态地处理任何属性值以检查是否为真。

过滤器

.filter('isPropertyTrue', function () {
    return function (elements, property) {
        var returnArray = [];
        angular.forEach(elements, function (val, index) {
            if (val[property]) returnArray.push(val)
        });
        return returnArray;
    }
});

代码

$scope.isButtonEnabled = function () {
    var selectLineCheckboxs = document.getElementsByClassName('selectLineRadioInput');
    var checkedValues = $filter('isPropertyTrue')(selectLineCheckboxs, 'checked');
    self.selectLineChecked = checkedValues.length > 0 ? true : false;
    return self.selectLineChecked;
};

JSFiddle 希望对您有所帮助,谢谢。

关于javascript - 好奇 angularJs 是否有更好的方法来计算复选框的数量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28763040/

相关文章:

javascript - 如何使用以下字典执行直方图?

javascript - 有没有一种方法可以使用 jQuery 的 flot 来绘制不包含 x 值的数据集?

javascript - 我的按钮的 jquery 事件处理程序只工作一次

javascript - 使用 ng-repeat 过滤列表

javascript - 母版页 url 作为前缀附加到 sharepoint 2013 中的 anchor href

javascript - 如何从 saga 发送 thunk?

javascript - 将两个变量从 onClick 上的另一个 php 返回到两个不同的 div

javascript - 如何知道所有 $http 调用是否结束 - AngularJS

javascript - 使用 AJAX 从客户端( Angular )获取数据到 Node.js

javascript - AppGyver 和 AngularJS : dependency injection failing with 2 services from same module