Heim >Web-Frontend >CSS-Tutorial >Wie kann ich bedingte Klassen effizient auf Listenelemente in AngularJS anwenden?
In AngularJS kann die bedingte Anwendung von Klassen auf Elemente auf verschiedene Arten erreicht werden. Lassen Sie uns die optimalsten Lösungen basierend auf Ihrem spezifischen Szenario erkunden.
Szenario: Ein Array wird als ungeordnete Liste gerendert und Sie möchten dem Listenelement eine Klasse hinzufügen, deren Index durch den ausgewählten Index gesteuert wird durch die selectedIndex-Eigenschaft auf dem Controller.
Erster Ansatz:
Sie sind Derzeit wird der Listenelementcode manuell repliziert und die Klasse zu einem der Listenelement-Tags hinzugefügt. Obwohl diese Methode funktioniert, führt sie zu unnötiger Duplizierung.
Lösung 1: ng-class-Direktive mit ausgewerteten Ausdrücken
Anstatt CSS-Klassennamen im Controller zu verwenden, können Sie dies tun Verwenden Sie einen Ausdruck, um den Klassennamen dynamisch festzulegen. So geht's:
<li ng:class="{true:'selected', false:''}[$index==selectedIndex]"></li>
Hinweis:Verwenden Sie die alte Syntax mit dem Doppelpunkt aufgrund des für diesen Ansatz erforderlichen Auswertungsmechanismus.
Lösung 2: ng -class-Direktive mit bedingten Objekten
AngularJS unterstützt auch die Zuweisung von Objekten zur ng-class-Direktive. Jeder Eigenschaftsname stellt einen Klassennamen dar und sein Wert bestimmt, ob die Klasse angewendet wird.
<li ng-class="{selected: $index==selectedIndex}"></li>
Zusätzlicher Hinweis:
Während beide Lösungen das gleiche Ergebnis erzielen, Sie sind funktional nicht gleichwertig. Lösung 2 ermöglicht es Ihnen, Modelleigenschaften Klassennamen zuzuordnen und sie aus dem Controller-Code herauszuhalten. Dies bietet mehr Flexibilität und verbessert die Lesbarkeit des Codes.
Das obige ist der detaillierte Inhalt vonWie kann ich bedingte Klassen effizient auf Listenelemente in AngularJS anwenden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!