2015-05-08 247 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

是的。你的小提琴運行良好。我將在小提琴中更新我的代碼。謝謝。 –