Javascript 好奇angularJs是否有更好的方法来计算复选框的数量
我需要检查是否选中了任何复选框。所以我是这样做的Javascript 好奇angularJs是否有更好的方法来计算复选框的数量,javascript,angularjs,Javascript,Angularjs,我需要检查是否选中了任何复选框。所以我是这样做的 self.isButtonEnabled = function() { var selectLineCheckboxs = document.getElementsByClassName('selectLineRadioInput'), i = 0, checkboxLength = selectLineCheckboxs.length - 1; for (i = 0; i <= checkboxLength; i++) {
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;
};
self.isButtonEnabled=函数(){
var selectLineCheckboxs=document.getElementsByClassName('selectlineradionput'),
i=0,checkboxLength=selectLineCheckboxs.length-1;
对于(i=0;i我一直以这种方式在scope$scope.Items
中的ng bind变量中使用它。绑定的变量可用于查看检查了哪些项目
angular.forEach($scope.Items,function(key,value)
{
if(key.Selected)
{
counter++;
}
});
是一个JSFiddle来演示相同的我可以帮助您编写一些代码,将其转换为角度
使用angular.element
(由提供以获取元素)代替document.getElementsByClassName
在检查属性是否被选中时,可以使用$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
更新
$scope.isButtonEnabled = function () {
var selectLineCheckboxs = document.getElementsByClassName('selectLineRadioInput');
var checkedValues = $filter('isPropertyTrue')(selectLineCheckboxs, 'checked');
self.selectLineChecked = checkedValues.length > 0 ? true : false;
return self.selectLineChecked;
};
我建议您创建自己的自定义筛选器,可以用于多种用途,或者动态检查属性值是否为真。我知道您的代码与您在回答中要求的代码相同,但我将您的一些代码作为可重用组件,它可以动态工作,以检查任何属性值是否为真
过滤器
.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;
};
希望这能对您有所帮助,谢谢。我从API获得的复选框数量是动态的。因此我无法设置$scope.Items name objif如果您可以使用jQuery,这可能会有帮助。$('form input[type=checkbox]:checked')。size()
我不能只使用jquery javascriptonly@mayank这对你有帮助吗?@mayank很高兴帮助你,谢谢。此行发布了$filter('filter')(selectLineCheckboxs,{'checked':true});这将返回所有复选框,但不是所有选中的复选框!!@downvoter我可以知道否决投票的原因吗?