Jak zrobić trójkę z AngularJS (w szablonach)?
Byłoby miło użyć niektórych atrybutów HTML (klas i stylu) zamiast tworzyć i wywoływać funkcję kontrolera.
źródło
Jak zrobić trójkę z AngularJS (w szablonach)?
Byłoby miło użyć niektórych atrybutów HTML (klas i stylu) zamiast tworzyć i wywoływać funkcję kontrolera.
Aktualizacja : Angular 1.1.5 dodał operator trójskładnikowy , więc teraz możemy po prostu pisać
<li ng-class="$first ? 'firstRow' : 'nonFirstRow'">
Jeśli używasz wcześniejszej wersji Angulara, masz dwie możliwości:
(condition && result_if_true || !condition && result_if_false)
{true: 'result_if_true', false: 'result_if_false'}[condition]
punkt 2. powyżej tworzy obiekt o dwóch właściwościach. Składnia tablicowa służy do wyboru właściwości o nazwie true lub właściwości o nazwie false i zwracania powiązanej wartości.
Na przykład,
<li class="{{{true: 'myClass1 myClass2', false: ''}[$first]}}">...</li>
or
<li ng-class="{true: 'myClass1 myClass2', false: ''}[$first]">...</li>
$ first jest ustawione na true w powtórzeniu ng dla pierwszego elementu, więc powyższe zastosuje klasy „myClass1” i „myClass2” tylko za pierwszym razem przez pętlę.
Z klasą ng jest jednak łatwiejszy sposób: klasa-ng przyjmuje wyrażenie, które musi być ocenione na jedno z poniższych:
Przykład 1) podano powyżej. Oto przykład 3, który moim zdaniem brzmi znacznie lepiej:
<li ng-class="{myClass: $first, anotherClass: $index == 2}">...</li>
Za pierwszym razem poprzez pętlę powtarzania ng dodawana jest klasa myClass. Za trzecim razem ($ index zaczyna się od 0), klasa anotherClass jest dodawana.
ng-style przyjmuje wyrażenie, które musi być przetwarzane na mapę / obiekt nazw stylów CSS na wartości CSS. Na przykład,
<li ng-style="{true: {color: 'red'}, false: {}}[$first]">...</li>
ng-style
zaktualizować, ale wydaje się, że jest oceniany tylko przy pierwszym renderowaniu elementu. (Angular noob tutaj)Aktualizacja: Angular 1.1.5 dodał operator trójskładnikowy, ta odpowiedź jest poprawna tylko dla wersji wcześniejszych niż 1.1.5. W wersji 1.1.5 i nowszych zobacz aktualnie przyjętą odpowiedź.
Przed Angular 1.1.5:
Forma trójki w angularjs jest:
Przykładem może być:
lub:
źródło
W przypadku tekstów w szablonie kątowym (
userType
jest własnością $ scope, jak $ scope.userType):źródło
Do tej pory wszyscy odkryliśmy, że wersja 1.1.5 ma odpowiednią trójkę w
$parse
funkcji, więc użyj tej odpowiedzi jako przykładu filtrów:A następnie użyj go jako
źródło
Oto on: operator trójkowy został dodany do parsera kątowego w 1.1.5 ! zobacz dziennik zmian
Oto skrzypce pokazujące nowego trójskładnikowego operatora stosowanego w dyrektywie klasy ng.
źródło
Chociaż możesz używać
condition && if-true-part || if-false-part
-syntax w starszych wersjach angular, zwykły operator trójskładnikowycondition ? true-part : false-part
jest dostępny w Angular 1.1.5 i nowszych .źródło
Przycisk przełącza i zmienia nagłówek przycisku oraz wyświetla / ukrywa panel div. Zobacz Plunkr
źródło