Wenn Sie keine CSS-Klassennamen in den Controller einfügen möchten, wie ich es tue, hier ist ein alter Trick, den ich seit den Zeiten vor v1 verwende. Wir können einen Ausdruck schreiben, der direkt zu einem Klassenname selected ausgewertet wird, es sind keine benutzerdefinierten Direktiven erforderlich:
ng:class="{true:'selected', false:''}[$index==selectedIndex]"
Bitte beachten Sie die alte Syntax mit dem Doppelpunkt.
Es gibt auch eine bessere Möglichkeit, Klassen bedingt anzuwenden, wie zum Beispiel:
ng-class="{selected: $index==selectedIndex}"
Angular unterstützt jetzt Ausdrücke, die ein Objekt zurückgeben. Jede Eigenschaft (Name) dieses Objekts wird nun als Klassenname betrachtet und je nach ihrem Wert angewendet.
Allerdings sind diese Möglichkeiten nicht funktional gleich. Hier ist ein Beispiel:
ng-class="{admin:'enabled', moderator:'disabled', '':'hidden'}[user.role]"
Wir könnten daher vorhandene CSS-Klassen wiederverwenden, indem wir ein Modellattribut auf einen Klassennamen abbilden und gleichzeitig CSS-Klassen aus dem Controller-Code heraus halten.
2 Stimmen
Antworten auf diese Frage zeigen, dass das Templating mehr als {{varname}} umfasst. Wo finde ich Dokumentation darüber, was das Templating noch bietet, wie z.B. den ternären Operator in ein paar verschiedenen Formen? docs.angularjs.org/guide/templates scheint nicht zu erklären, was das Templating an Bedingungen usw. bietet, abgesehen von {{varname.fieldname}}.
0 Stimmen
Das ist für mich so nützlich, ich hoffe es funktioniert auch für dich tech-blog.maddyzone.com/javascript/…