Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/365.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 选中AngularJS中的所有复选框_Javascript_Angularjs_Checkbox_Angularjs Ng Change - Fatal编程技术网

Javascript 选中AngularJS中的所有复选框

Javascript 选中AngularJS中的所有复选框,javascript,angularjs,checkbox,angularjs-ng-change,Javascript,Angularjs,Checkbox,Angularjs Ng Change,我有这样一个全选复选框和列表复选框。 从中接收数据的复选框列表 $scope.contacts = [ {"name": "Bambizo", "check": false}, {"name": "Jimmy", "check": false}, {"name": "Tommy", "check": false}, {"name": "Nicky", "check": false} ]; 我想当我选中一个全选复选框时,它会使下面

我有这样一个全选复选框和列表复选框。

从中接收数据的复选框列表

$scope.contacts = [
        {"name": "Bambizo", "check": false},
        {"name": "Jimmy", "check": false},
        {"name": "Tommy", "check": false},
        {"name": "Nicky", "check": false}
];
我想当我选中一个全选复选框时,它会使下面列表中的所有复选框都被选中或取消选中。这是我的代码:

选中所有复选框:

<input type="checkbox" ng-model="checkAllContact" ng-change="checkAllContact(checkAllContact)">
$scope.checkAllContact = function(){
        var allChecked = false;
        for(i = 0; i< $scope.contacts.length; i++){
            if ($scope.contacts[i].check == true){
                allChecked = true;
            }else {
                allChecked = false;
            }
        }

        if (allChecked = true){
            for(i = 0; i< $scope.contacts.length; i++){
                $scope.contacts[i].check = false;
            }
        }else{
            for(i = 0; i< $scope.contacts.length; i++){
                $scope.contacts[i].check = true;
            }    
        }
    }

检查所有联系人功能:

<input type="checkbox" ng-model="checkAllContact" ng-change="checkAllContact(checkAllContact)">
$scope.checkAllContact = function(){
        var allChecked = false;
        for(i = 0; i< $scope.contacts.length; i++){
            if ($scope.contacts[i].check == true){
                allChecked = true;
            }else {
                allChecked = false;
            }
        }

        if (allChecked = true){
            for(i = 0; i< $scope.contacts.length; i++){
                $scope.contacts[i].check = false;
            }
        }else{
            for(i = 0; i< $scope.contacts.length; i++){
                $scope.contacts[i].check = true;
            }    
        }
    }
$scope.checkAllContact=function(){
var allChecked=false;
对于(i=0;i<$scope.contacts.length;i++){
if($scope.contacts[i].check==true){
allChecked=true;
}否则{
allChecked=false;
}
}
如果(allChecked=true){
对于(i=0;i<$scope.contacts.length;i++){
$scope.contacts[i].check=false;
}
}否则{
对于(i=0;i<$scope.contacts.length;i++){
$scope.contacts[i].check=true;
}    
}
}
但当我运行并单击“全选”复选框时。它会出错:

如何解决这个问题,或者有其他的方法吗?谢谢
ng model=“checkAllContact”
方法
checkAllContact
具有相同的名称

checkAllContact
范围变量被
checkAllContact
覆盖


您需要更改函数名才能解决此问题。

您的函数名和变量名(ng型号)都相同,请更改其中一个

你也可以用一种更简单的方法来做,比如说

HTML:


参见示例

您是否尝试过
ng change=“checkAllContact()”
?它仍然会出错:“TypeError:无法读取null的属性“0”。谢谢。它不会出错。但是我的函数仍然没有运行:(.我可以在选中复选框时运行函数吗?@PhamMinhTan是否更改了函数名?是的,我更改了。方法和变量是different@PhamMinhTan你能用你的尝试更新你的问题吗till@PhamMinhTan当你准备这么做的时候。我试着按照你的答案去做。但是我的$scope.checkAllContact1总是错误的。@PhamMinhTan。它在我的小提琴中工作,不是吗?如果它仍然不工作,你能提供小提琴吗?是的。你的小提琴运行良好。我将在小提琴中更新我的代码。谢谢。