Wie macht man ein Ternär mit AngularJS (in den Vorlagen)?
Es wäre schön, einige in HTML-Attributen (Klassen und Stil) zu verwenden, anstatt eine Funktion des Controllers zu erstellen und aufzurufen.
quelle
Wie macht man ein Ternär mit AngularJS (in den Vorlagen)?
Es wäre schön, einige in HTML-Attributen (Klassen und Stil) zu verwenden, anstatt eine Funktion des Controllers zu erstellen und aufzurufen.
Update : Angular 1.1.5 hat einen ternären Operator hinzugefügt , sodass wir jetzt einfach schreiben können
<li ng-class="$first ? 'firstRow' : 'nonFirstRow'">
Wenn Sie eine frühere Version von Angular verwenden, haben Sie zwei Möglichkeiten:
(condition && result_if_true || !condition && result_if_false)
{true: 'result_if_true', false: 'result_if_false'}[condition]
Punkt 2. oben erstellt ein Objekt mit zwei Eigenschaften. Die Array-Syntax wird verwendet, um entweder die Eigenschaft mit dem Namen true oder die Eigenschaft mit dem Namen false auszuwählen und den zugehörigen Wert zurückzugeben.
Z.B,
<li class="{{{true: 'myClass1 myClass2', false: ''}[$first]}}">...</li>
or
<li ng-class="{true: 'myClass1 myClass2', false: ''}[$first]">...</li>
$ first wird innerhalb einer ng-Wiederholung für das erste Element auf true gesetzt, sodass die oben genannten Klassen 'myClass1' und 'myClass2' nur beim ersten Durchlaufen der Schleife angewendet werden.
Mit ng-class gibt es jedoch einen einfacheren Weg: ng-class verwendet einen Ausdruck, der wie folgt ausgewertet werden muss:
Ein Beispiel für 1) wurde oben angegeben. Hier ist ein Beispiel von 3, das meiner Meinung nach viel besser liest:
<li ng-class="{myClass: $first, anotherClass: $index == 2}">...</li>
Beim ersten Durchlaufen einer ng-repeat-Schleife wird die Klasse myClass hinzugefügt. Beim dritten Durchgang ($ index beginnt bei 0) wird die Klasse anotherClass hinzugefügt.
ng-style verwendet einen Ausdruck, der zu einer Zuordnung / einem Objekt von CSS-Stilnamen zu CSS-Werten ausgewertet werden muss. Z.B,
<li ng-style="{true: {color: 'red'}, false: {}}[$first]">...</li>
ng-style
aktualisieren, aber es scheint nur ausgewertet zu werden, wenn das Element zum ersten Mal gerendert wird. (Angular Noob hier)Update: Angular 1.1.5 hat einen ternären Operator hinzugefügt. Diese Antwort ist nur für Versionen vor 1.1.5 korrekt. Informationen zu 1.1.5 und höher finden Sie in der aktuell akzeptierten Antwort.
Vor dem Winkel 1.1.5:
Die Form eines Ternärs in Angularjs ist:
Ein Beispiel wäre:
oder:
quelle
Für Texte in eckigen Vorlagen (
userType
ist eine Eigenschaft von $ scope, wie $ scope.userType):quelle
Inzwischen haben wir alle herausgefunden, dass Version 1.1.5 einen richtigen Ternär in der
$parse
Funktion enthält. Verwenden Sie diese Antwort einfach als Beispiel für Filter:Und dann benutze es als
quelle
Da ist es: Der ternäre Operator wurde in 1.1.5 zum Winkelparser hinzugefügt ! siehe das Changelog
Hier ist eine Geige, die einen neuen ternären Operator zeigt, der in der Direktive der Klasse ng verwendet wird.
quelle
Während Sie die
condition && if-true-part || if-false-part
-syntax in älteren Versionen von Angular verwenden können , ist der übliche ternäre Operatorcondition ? true-part : false-part
in Angular 1.1.5 und höher verfügbar .quelle
Schaltfläche umschalten und Kopfzeile der Schaltfläche ändern und Div-Bereich ein- / ausblenden. Siehe den Plunkr
quelle