Comment rendre un événement ng-click conditionnel dans AngularJS

J’ai ce code dans ng-repeat:

Do something 

Comment faire en sorte que le bouton soit désactivé lorsqu’il a class="disabled" .

Comment puis-je créer la condition dans le code HTML en utilisant la classe,

ou existe-t-il un moyen de le faire dans le javascript qui ressemblera à ceci:

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

Il n’est pas bon de manipuler avec DOM (y compris la vérification des atsortingbuts) dans n’importe quel endroit sauf les directives. Vous pouvez append dans la scope une valeur indiquant si le lien doit être désactivé.

Mais un autre problème est que ngDisabled ne fonctionne sur aucun élément, à l’exception des contrôles de formulaire. Vous ne pouvez donc pas l’utiliser avec , mais vous pouvez l’utiliser avec

Une autre méthode consiste à utiliser l’évaluation paresseuse des expressions comme isDisabled || action() isDisabled || action() pour que l’action ne soit pas appelée si isDisabled est vrai.

Voici les deux solutions: http://plnkr.co/edit/5d5R5KfD4PCE8vS3OSSx?p=preview

Nous pouvons append un événement ng-click conditionnellement sans utiliser la classe désactivée.

HTML:

 
{{object.value}}

J’utilise l’expression && qui fonctionne parfaitement pour moi.

Par exemple,

  

Si vm.slideOneValid est false, la deuxième partie de l’expression n’est pas déclenchée. Je sais que cela met la logique dans le DOM, mais c’est un moyen rapide de désactiver ng-click et ng-click pour le placer.

N’oubliez pas d’append ng-model à l’élément pour que ng-disabled fonctionne.

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

 
{{object.value}}

Le statut est un atsortingbut d’object personnalisé, vous pouvez le nommer comme vous voulez.
Le disabled dans ng-class est un nom de classe CSS, le object.status doit être true ou false

Vous pouvez modifier le statut de chaque object dans la fonction disableIt .
Dans votre contrôleur, vous pouvez faire ceci:

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

J’ai aussi eu ce problème et j’ai simplement découvert que si vous supprimez simplement le “#”, le problème est résolu. Comme ça :

 Do something 

Fondamentalement, ng-click vérifie d’abord le isDisabled et, en fonction de sa valeur, il décidera si la fonction doit être appelée ou non.

 Do something 

OU lisez-le comme

 Do something