web-dev-qa-db-fra.com

Logique en ligne dans les modèles dans AngularJS

Existe-t-il un moyen d'écrire la logique en ligne dans un modèle dans AngularJS.

Ce que je veux faire, c'est quelque chose comme ça:

<div ng-repeat="item in items">
    {{item.isValid ? 'Valid item' : 'Invalid Item'}}
</div>
32
Seb Nilsson

Vous pouvez utiliser && et ||, qui finira par fonctionner comme les opérateurs ternaires.

{{item.isValid && 'Valid' || 'Invalid' }}

EDIT: Angular introduit les opérateurs ternaires dans 1.1.5:

{{item.isValid ? 'Valid' : 'Invalid' }}

72
Andrew Joslin

Vous ne pouvez pas utiliser de conditions dans angular. Et, si votre contenu div est léger (juste du texte), vous pouvez utiliser ng-bind (cela vous évite également d'avoir un élément span supplémentaire). ):

<div ng-repeat="item in items" ng-bind="{true: 'Valid item', false: 'Invalid item'}[item.isValid]"></div>
0
Stewie

Vous pouvez insérer un span avec ng-show pour afficher votre texte conditionnel

Exemple

<div ng-repeat="item in items">
    <span ng-show="item.isValid">
           Valid item
    </span>
    <span ng-show="!item.isValid">
           Invalid item
    </span> 
</div>
0
I_Debug_Everything