Wenn Sie CSS-Klassennamen nicht wie ich in Controller einfügen möchten, finden Sie hier einen alten Trick, den ich seit Tagen vor Version 1 verwende. Wir können einen Ausdruck schreiben, der direkt zu einem ausgewählten Klassennamen ausgewertet wird. Es sind keine benutzerdefinierten Anweisungen erforderlich:
ng:class="{true:'selected', false:''}[$index==selectedIndex]"
Bitte beachten Sie die alte Syntax mit Doppelpunkt.
Es gibt auch eine neue 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 jetzt als Klassenname betrachtet und abhängig von ihrem Wert angewendet.
Diese Wege sind jedoch funktional nicht gleich. Hier ist ein Beispiel:
ng-class="{admin:'enabled', moderator:'disabled', '':'hidden'}[user.role]"
Wir könnten daher vorhandene CSS-Klassen wiederverwenden, indem wir eine Modelleigenschaft grundsätzlich einem Klassennamen zuordnen und gleichzeitig CSS-Klassen aus dem Controller-Code heraushalten.