web-dev-qa-db-fra.com

Passer la valeur de la case à cocher au clic-clic de angular

Existe-t-il un moyen de transmettre à la directive angulaire ng-clic la valeur de l'entrée associée?

En d’autres termes, que devrait remplacer this.value dans ce qui suit:

<input type="checkbox" id="cb1" ng-click="checkAll(this.value)" />

PS. Je ne veux pas de solution de contournement pour alterner les valeurs, je me demande simplement s'il est possible de passer la valeur d'une entrée comme argument d'une fonction angulaire.

20
Serge

Vous pouvez faire les choses suivantes:

  • Utilisez ng-model si vous souhaitez lier un composant HTML à une portée angulaire. 
  • Remplacez ng-click par ng-change
  • Si vous devez lier une valeur après avoir coché et décoché la case, utilisez ng-true-value="someValue" et ng-false-value="someValue".

L'ordre d'exécution de ng-click et ng-model est ambigu puisque ils ne définissent pas de priorités claires. Au lieu de cela, vous devriez utiliser ng-change ou un $watch sur le $scope pour vous assurer d'obtenir les valeurs correctes de la variable de modèle.

Gracieuseté de musically_ut

Démo de travail

<input type="checkbox" id="cb1" ng-model="check" ng-change="checkAll(check)" ng-true-value="YES" ng-false-value="NO"/> Citizen
30
Nidhish Krishnan

Aujourd'hui, je voulais faire la même chose et je vois que personne n'a répondu à la question. Ceci est contraire à la philosophie angulaire, mais vous pouvez remplacer "this.value" par "$ event.target.checked":

<input type="checkbox" id="cb1" ng-click="checkAll($event.target.checked)" />
2
Arntor

Si vous lui affectez un modèle-ng, sa valeur booléenne sera renvoyée en fonction de sa modification:

<input type="checkbox" id="cb1" ng-model="checkValue" ng-change="checkAll(checkValue)" />

Mieux vaut utiliser ng-change plutôt que ng-click

1
Sajal

Liez la case à cocher à une valeur et transmettez-la à ng-click.

<input type="checkbox" ng-model="value" id="cb1" ng-click="checkAll(value)" />
1
Daniel Tran