262 votes

expression angulaire de la classe ng if-else

J'utilise angularjs ng-class de la manière suivante:

 <div class="bigIcon" data-ng-click="PickUp()" 
ng-class="{first:'classA', second:'classB', third:'classC', fourth:'classC'}[call.State]"/>
 

et je me suis demandé si je pouvais utiliser l'expression if-else, puis-je faire quelque chose de similaire à ceci:

 <div class="bigIcon" data-ng-click="PickUp()" 
ng-class="{first:'classA', second:'classB', else:'classC'}[call.State]"/>
 

signifiant à chaque fois call.State différent de first ou second utilisation classC et ne spécifiez pas chaque valeur.

Merci!

529voto

Jossef Harush Points 1656

J'ai fait face à ce problème aussi.

Découvert une autre approche pour la résoudre basée sur des instructions imbriquées inline if then (#? 1: 2)

 ng-class="apt.name.length >= 15 ? 'col-md-12' : (apt.name.length >= 10 ? 'col-md-6' : 'col-md-4')"
 

109voto

DotDotDot Points 1354

vous pouvez essayer en utilisant une fonction comme celle-ci:

 <div ng-class='whatClassIsIt(call.State)'>
 

Ensuite, placez votre logique dans la fonction elle-même:

     $scope.whatClassIsIt= function(someValue){
     if(someValue=="first")
            return "ClassA"
     else if(someValue=="second")
         return "ClassB";
     else
         return "ClassC";
    }
 

J'ai fait un violon avec un exemple: http://jsfiddle.net/DotDotDot/nMk6M/

65voto

joel.bowen Points 55

J'étais dans une situation où j'avais besoin de deux déclarations «si» qui pouvaient être vraies et d'un «autre» ou par défaut si ni l'une ni l'autre n'était vraie, je ne suis pas sûr qu'il s'agisse d'une amélioration de la réponse de Jossef, mais cela me semblait plus clair:

 ng-class="{'class-one' : value.one , 'class-two' : value.two}" class="else-class"
 

Où value.one et value.two sont vrais, ils ont priorité sur la classe .else

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