118 votes

Comment rendre un événement ng-click conditionnel ?

J'ai ce code à l'intérieur de ng-repeat :

<a href="#" class="disabled" ng-click="doSomething(object)">Do something</a>

Comment faire une condition que le bouton est désactivé quand il a class="disabled" ?

Ou existe-t-il un moyen de le faire en Javascript pour que cela ressemble à.. :

$('.do-something-button').click(function(){
  if (!$(this).hasClass('disabled')) {
    do something
  }
});

1voto

zx1986 Points 542

Vous pouvez essayer d'utiliser ng-class .
Voici mon exemple simple :
http://plnkr.co/edit/wS3QkQ5dvHNdc6Lb8ZSF?p=preview

<div ng-repeat="object in objects">
  <span ng-class="{'disabled': object.status}" ng-click="disableIt(object)">
    {{object.value}}
  </span>
</div>

Le statut est un attribut personnalisé de l'objet, vous pouvez le nommer comme vous le souhaitez.
El disabled sur ng-class est un nom de classe CSS, l'élément object.status devrait être true o false

Vous pourriez changer le statut de chaque objet en fonction disableIt .
Dans votre contrôleur, vous pourriez faire ceci :

$scope.disableIt = function(obj) {
  obj.status = !obj.status
}

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X