2015-05-08 202 views
1

我有一个像这样的全选复选框和列表复选框。
Select All Checkbox选择AngularJS中的所有复选框

一个复选框列表从

$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)"> 

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; 
      }  
     } 
    } 

但是当我运行,并单击选择所有复选框。它使一个错误:

Error when after click checkbox

如何解决它或有任何其他的方式做到这一点?谢谢

+0

你试过'NG-变化= “checkAllContact()”'的例子吗? – artm

+0

它仍然出错:“TypeError:无法读取null的属性'0'” –

回答

2

ng-model="checkAllContact" &方法checkAllContact具有相同的名称。

checkAllContact范围变量覆盖checkAllContact

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

+0

谢谢。它不会产生错误。但我还是功能无法运行:(。我可以运行一个功能时选中一个复选框? –

+0

@PhamMinhTan你改变你的函数名? –

+0

是的,我做到了。你可以更新你的问题与方法和变量是不同 –

1

您的函数名称和变量名称(ng-model)都相同,请更改其中之一。

此外,你可以做一个更简单的方法,例如。

HTML:

<input type="checkbox" ng-model="checkAllContact1" ng-change="checkAllContact()"> 
<div ng-repeat="item in contacts"> 
    <input type="checkbox" ng-model="item.check"/> 
</div> 

JS:

$scope.checkAllContact = function(){ 
    if ($scope.checkAllContact1) { 
     $scope.checkAllContact1 = true; 
    } else { 
     $scope.checkAllContact1 = false; 
    } 
    angular.forEach($scope.contacts, function (item) { 
     item.check = $scope.checkAllContact1; 
    }); 
} 

Fiddle

+0

我尝试做你喜欢的答案。但是我的$ scope.checkAllContact1总是错误的。 –

+0

@PhamMinhTan。它在我的小提琴中工作不是吗?如果它仍然不能工作,你能提供一个小提琴吗? – Zee

+0

是的。你的小提琴运行良好。我将在小提琴中更新我的代码。谢谢。 –