Comment faites-vous un ternaire avec AngularJS (dans les modèles)?
Ce serait bien d'utiliser certains attributs HTML (classes et style) au lieu de créer et d'appeler une fonction du contrôleur.
la source
Comment faites-vous un ternaire avec AngularJS (dans les modèles)?
Ce serait bien d'utiliser certains attributs HTML (classes et style) au lieu de créer et d'appeler une fonction du contrôleur.
Mise à jour : Angular 1.1.5 a ajouté un opérateur ternaire , donc maintenant nous pouvons simplement écrire
<li ng-class="$first ? 'firstRow' : 'nonFirstRow'">
Si vous utilisez une version antérieure d'Angular, vos deux choix sont:
(condition && result_if_true || !condition && result_if_false)
{true: 'result_if_true', false: 'result_if_false'}[condition]
l'élément 2. ci-dessus crée un objet avec deux propriétés. La syntaxe du tableau est utilisée pour sélectionner la propriété portant le nom true ou la propriété portant le nom false et renvoyer la valeur associée.
Par exemple,
<li class="{{{true: 'myClass1 myClass2', false: ''}[$first]}}">...</li>
or
<li ng-class="{true: 'myClass1 myClass2', false: ''}[$first]">...</li>
$ first est défini sur true dans une répétition ng pour le premier élément, donc ce qui précède n'appliquerait les classes 'myClass1' et 'myClass2' que la première fois dans la boucle.
Avec la classe ng, il existe un moyen plus simple: la classe ng prend une expression qui doit correspondre à l'une des valeurs suivantes:
Un exemple de 1) a été donné ci-dessus. Voici un exemple de 3, qui je pense se lit beaucoup mieux:
<li ng-class="{myClass: $first, anotherClass: $index == 2}">...</li>
La première fois dans une boucle ng-repeat, la classe myClass est ajoutée. La 3ème fois ($ index commence à 0), la classe anotherClass est ajoutée.
ng-style prend une expression qui doit s'évaluer en une carte / un objet de noms de style CSS en valeurs CSS. Par exemple,
<li ng-style="{true: {color: 'red'}, false: {}}[$first]">...</li>
ng-style
à jour, mais il ne semble être évalué que lorsque l'élément est rendu pour la première fois. (Noob angulaire ici)Mise à jour: Angular 1.1.5 a ajouté un opérateur ternaire, cette réponse est correcte uniquement pour les versions antérieures à 1.1.5. Pour 1.1.5 et versions ultérieures, voir la réponse actuellement acceptée.
Avant Angular 1.1.5:
La forme d'un ternaire dans angularjs est:
Un exemple serait:
ou:
la source
Pour les textes dans un modèle angulaire (
userType
est la propriété de $ scope, comme $ scope.userType):la source
À présent, nous avons tous découvert que la version 1.1.5 est livrée avec un ternaire approprié dans la
$parse
fonction, utilisez simplement cette réponse comme exemple de filtres:Et puis utilisez-le comme
la source
Voilà: l'opérateur ternaire a été ajouté à l'analyseur angulaire dans 1.1.5 ! voir le changelog
Voici un violon montrant un nouvel opérateur ternaire utilisé dans la directive ng-class.
la source
Bien que vous puissiez utiliser la
condition && if-true-part || if-false-part
syntaxe -sync dans les anciennes versions d'angular, l'opérateur ternaire habituelcondition ? true-part : false-part
est disponible dans Angular 1.1.5 et versions ultérieures .la source
Bouton bascule et modifie l'en-tête du bouton et affiche / masque le panneau div. Voir le Plunkr
la source