Cochez/ Décochez Toutes les cases - AngularJS ng-repeat
J'ai une structure qui ressemble à ceci: http://jsfiddle.net/deeptechtons/TKVH6/
<div>
<ul ng-controller="checkboxController">
<li>Check All
<input type="checkbox" ng-model="selectedAll" ng-click="checkAll()" />
</li>
<li ng-repeat="item in Items">
<label>{{item.Name}}
<input type="checkbox" ng-model="item.Selected" />
</label>
</li>
</ul>
</div>
angular.module("CheckAllModule", [])
.controller("checkboxController", function checkboxController($scope) {
$scope.Items = [{
Name: "Item one"
}, {
Name: "Item two"
}, {
Name: "Item three"
}];
$scope.checkAll = function () {
if ($scope.selectedAll) {
$scope.selectedAll = true;
} else {
$scope.selectedAll = false;
}
angular.forEach($scope.Items, function (item) {
item.Selected = $scope.selectedAll;
});
};
});
Lors de la vérification de tous est sélectionné ou désélectionné, toutes les autres cases sont sélectionnés. Mais quand "Check All" est sélectionné, et je décochez l'un des éléments, je veux "Vérifier Tout" pour être désélectionnés.
Merci d'avance!
(PS: Merci à deeptechtons pour le JSFiddle)
Celui qui downvoted la question, pourriez-vous s'il vous plaît laissez-moi savoir la raison? Il serait utile à l'avenir. Merci!
OriginalL'auteur Ramya | 2015-06-23
Vous devez vous connecter pour publier un commentaire.
Si vous utilisez Angulaire de 1,3+ vous pouvez utiliser
getterSetter
deng-model-options
pour résoudre ce et éviter manuellement à garder la trace de laallSelected
étatHTML:
JS:
http://jsfiddle.net/2jm6x4co/
OriginalL'auteur rob
Vous pouvez utiliser cette fonction pour vérifier si tous les documents sont vérifiés à chaque fois qu'une case à cocher changements:
Le code de la vue:
http://jsfiddle.net/TKVH6/840/
Pas de problème, merci pour la fixation.
OriginalL'auteur Kmart2k1
de travail exemple: http://jsfiddle.net/egrendon/TKVH6/845/
vue:
contrôleur:
OriginalL'auteur Ernesto Rendon
Ici est une superbe façon de le faire
http://jsfiddle.net/TKVH6/850/
Utiliser un peu de undescore (il suffit de le réduire) et ng-vérifié
Vous pouvez utiliser le javascript intégré .réduire si vous ne souhaitez pas utiliser le trait de soulignement.
OriginalL'auteur ajmajmajma
Cette réponse est la même logique pour Kmart2k1 réponse. Il met la responsabilité de mettre à jour le maître de case à cocher sur chaque enfant dans le
ng-repeat
. Au lieu d'utiliserarray.forEach
, j'utilisearray.certains
plus rapidement vérifier si tout des éléments non sélectionnés.HTML:
Javascript
Fourche violon
OriginalL'auteur ryanyuyu