Je veux représenter des données de modèle sous forme d’images différentes en utilisant Angular, mais j’ai du mal à trouver le “bon” moyen de le faire. Les documents Angular API sur les expressions indiquent que les expressions conditionnelles ne sont pas autorisées …
En simplifiant beaucoup, les données du modèle sont récupérées via AJAX et vous montre l’état de chaque interface sur un routeur. Quelque chose comme:
$scope.interfaces = ["UP", "DOWN", "UP", "UP", "UP", "UP", "DOWN"]
Donc, dans Angular, nous pouvons afficher l’état de chaque interface avec quelque chose comme:
- {{interface}}
BUT – Au lieu des valeurs du modèle, je voudrais montrer une image appropriée. Quelque chose qui suit cette idée générale.
- {{if interface=="UP"}}
{{else}}
{{/if}}
(Je pense que Ember supporte ce type de construction)
Bien sûr, je pourrais modifier le contrôleur pour renvoyer des URL d’images en fonction des données du modèle, mais cela semble violer la séparation du modèle et de la vue, non?
Cette publication a suggéré d’utiliser une directive pour changer la source de bg-img. Mais alors nous sums de retour pour mettre des URL dans le JS, pas le modèle …
Toutes les suggestions sont appréciées. Merci.
veuillez excuser les fautes de frappe
Au lieu de src
vous avez besoin de ng-src
.
Les vues AngularJS prennent en charge les opérateurs binarys
condition && true || false
Donc, votre tag img
ressemblerait à ceci
![]()
Note : les guillemets (c.-à-d. ‘Green-checkmark.png’) sont importants ici. Cela ne fonctionnera pas sans devis.
plunker ici (outils de développement ouverts pour voir le code HTML produit)
Une autre alternative (autre que les opérateurs binarys suggérés par @ jm-) est d’utiliser ng-switch :
ng-switch sera probablement meilleur / plus facile si vous avez plus de deux images.
Autrement ..
![]()
-
Pour angular 4 j’ai utilisé
Cela fonctionne pour moi, j’espère que cela pourra être utilisé par d’autres pour Angular 4-5
. 🙂