web-dev-qa-db-fra.com

Des expressions complexes sont-elles possibles dans ng-hide / ng-show?

Je veux le faire:

ng-hide="!globals.isAdmin && mapping.is_default"

mais l'expression est toujours évaluée à false.

Je ne veux pas définir de fonction spéciale sur $scope.

176
Paul

Utilisez une méthode de contrôleur si vous devez exécuter du code JavaScript arbitraire ou définir un filtre qui renvoie true ou false.

Je viens de tester (j'aurais dû le faire en premier) et quelque chose comme ng-show="!a && b" a fonctionné comme prévu.

211
Mark Rajcok

ng-show/ng-hide accepte uniquement les valeurs boolean.

Pour les expressions complexes, il est bon d’utiliser le contrôleur et le scope pour éviter les complications.

En dessous on travaillera (Ce n'est pas une expression très complexe)

ng-show="User=='admin' || User=='teacher'"

Ici, l'élément sera affiché dans l'interface utilisateur lorsqu'une des deux conditions renvoie la valeur true (opération OR).

Comme cela, vous pouvez utiliser n'importe quelle expression.

119
myaseedk

Cela fonctionnera si vous n'avez pas trop d'expressions.

Exemple: ng-show="form.type === 'Limited Company' || form.type === 'Limited Partnership'"

Pour toute autre expression, utilisez un contrôleur.

12
lvadim01

J'essaie généralement d'éviter les expressions avec ng-show et ng-hide, car elles ont été conçues comme des booléens et non comme des conditions. Si j'ai besoin d'une logique à la fois conditionnelle et booléenne, je préfère mettre la logique conditionnelle en utilisant ng-if comme première vérification, puis ajouter une vérification supplémentaire pour la logique booléenne avec ng-show et ng-hide

Cependant, si vous souhaitez utiliser une condition pour ng-show ou ng-hide, voici un lien avec quelques exemples: Affichage conditionnel utilisant ng-if, ng-show, ng-hide, ng-include, ng -switch

7
James Drinkard

Certaines de ces réponses ci-dessus n'ont pas fonctionné pour moi, mais cela a fonctionné. Juste au cas où quelqu'un d'autre aurait le même problème.

ng-show="column != 'vendorid' && column !='billingMonth'"
2
Deathstalker