Czy jest jakiś sposób na wyrażenie czegoś w rodzaju ng-class
warunku?
Na przykład próbowałem następujące:
<span ng-class="{test: 'obj.value1 == \'someothervalue\''}">test</span>
Problem z tym kodem polega na tym, że bez względu na wszystko obj.value1
test klasy jest zawsze stosowany do elementu. Robiąc to:
<span ng-class="{test: obj.value2}">test</span>
Dopóki obj.value2
nie jest równa prawdziwej wartości, klasa nie jest stosowana. Teraz mogę obejść ten problem w pierwszym przykładzie, wykonując następujące czynności:
<span ng-class="{test: checkValue1()}">test</span>
Gdzie checkValue1
funkcja wygląda następująco:
$scope.checkValue1 = function() {
return $scope.obj.value === 'somevalue';
}
Zastanawiam się tylko, czy tak ma ng-class
to działać. Buduję też niestandardową dyrektywę, w której chciałbym zrobić coś podobnego do tego. Nie mogę jednak znaleźć sposobu na obejrzenie wyrażenia (a może to niemożliwe i powód, dla którego tak działa).
Oto plnkr, aby pokazać, co mam na myśli.
ng-class="'label-success': obj.value1 == 'Ready', 'label-warning': obj.value1 == 'On hold'}"
Odpowiedzi:
Twoja pierwsza próba była prawie słuszna, powinna działać bez cytatów.
Oto plnkr .
Dyrektywa ngClass będzie działać z każdym wyrażeniem, które ocenia prawdę lub falsey, trochę podobnie do wyrażeń JavaScript, ale z pewnymi różnicami, o których możesz przeczytać tutaj . Jeśli twoje warunki warunkowe są zbyt złożone, możesz użyć funkcji, która zwraca wartość true lub falsey, tak jak w przypadku trzeciej próby.
Tylko w celu uzupełnienia: możesz także używać operatorów logicznych do tworzenia wyrażeń logicznych, takich jak
źródło
'
jeśli nie chcesz dodać więcej klas lub jeśli klasa ma łączniki lub znaki podkreślenia, zawiń nazwę klasy inaczej, to nie zadziała.ng-class="{'test test-2: obj.value1 === 'value'}"
ng-class="{'test test-2': obj.value1 === 'value'}"
[class.test]="obj.value1 == 'someotervalue'"
.ng-class="{danger:!enabled || (type === 'WHEEL' && !isOnline) }
Używanie klasy ng wewnątrz ng-repeat
Dla każdego statusu w pliku task.status dla wiersza używana jest inna klasa.
źródło
Angular JS zapewnia tę funkcjonalność w dyrektywie klasy ng . W którym możesz umieścić warunek, a także przypisać klasę warunkową. Możesz to osiągnąć na dwa różne sposoby.
Typ 1
W tym kodzie klasa będzie mieć zastosowanie według wartości stanu wartości
jeśli wartością stanu jest 0, zastosuj klasę pierwszą
jeśli wartością stanu jest 1, zastosuj klasę drugą
jeśli wartością stanu jest 2, zastosuj klasę trzecią
Wpisz 2
W której klasie będą stosowane według wartości statusu
jeśli wartością statusu jest 1 lub prawda, to doda klasę test_yes
jeśli wartością stanu jest 0 lub fałsz, to doda klasę test_no
źródło
<div ng-class="{'Image' || 'image': 'image-icon', 'Video' || 'video' || 'aVideo' || 'bVideo' : 'video-icon'}[resource.type]"></div>
Widzę świetne przykłady powyżej, ale wszystkie zaczynają się od nawiasów klamrowych (mapa Json). Inną opcją jest zwrócenie wyniku na podstawie obliczeń. Wynikiem może być również lista nazw klas css (nie tylko mapa). Przykład:
lub
Objaśnienie: Jeśli status jest aktywny, klasa
enabled
zostanie użyta. W przeciwnym raziedisabled
zostanie użyta klasa .Lista
[]
służy do używania wielu klas (nie tylko jednej).źródło
Istnieje prosta metoda, której można użyć z atrybutem klasy HTML i skrótem if / else. Nie trzeba go tak komplikować. Wystarczy użyć następującej metody.
Happy Coding, Nimantha Perera
źródło
Pokażę ci dwie metody, dzięki którym możesz dynamicznie zastosować klasę ng
Krok 1
Za pomocą operatora trójskładnikowego
Wynik
Jeśli twój warunek jest spełniony, klasa 1 zostanie zastosowana do twojego elementu, w przeciwnym razie zostanie zastosowana klasa 2.
Niekorzyść
Gdy spróbujesz zmienić wartość warunkową w czasie wykonywania, klasa jakoś się nie zmieni. Proponuję więc przejść do kroku 2, jeśli masz wymagania takie jak dynamiczna zmiana klasy.
Krok 2
Wynik
jeśli twój warunek pasuje do wartości 1, wówczas klasa 1 zostanie zastosowana do twojego elementu, jeśli pasuje do wartości 2, wówczas klasa 2 zostanie zastosowana i tak dalej. Dynamiczna zmiana klasy będzie z tym dobrze współpracować.
Mam nadzieję, że to ci pomoże.
źródło
Składnia kątowa polega na użyciu operatora : do wykonania odpowiednika modyfikatora if
Dodaj klasę clearfix do parzystych wierszy. Niemniej jednak wyrażenie może być wszystkim, co możemy mieć w normie, jeśli warunek, i powinno być ocenione na prawdę lub fałsz.
źródło
Używanie funkcji z klasą ng jest dobrą opcją, gdy ktoś musi uruchomić złożoną logikę, aby wybrać odpowiednią klasę CSS.
http://jsfiddle.net/ms403Ly8/2/
HTML:
CSS:
JavaScript :
źródło
Użyj tego
na przykład jeśli warunek to [2 == 2], stany to {prawda: „...”, fałsz: „...”}
źródło
W przypadku Angular 2 użyj tego
źródło
[ngClass]="['base-class', thread.isActive ? 'base-class--active' : '']"
ng-class
to dyrektywa podstawowych AngularJs. W którym możesz użyć „Składni ciągu”, „Składni macierzy”, „Wyrażenia wyrażonego”, „Operatora trójskładnikowego” i wielu innych opcji opisanych poniżej:ngClass przy użyciu składni łańcuchowej
Jest to najprostszy sposób użycia ngClass. Możesz po prostu dodać zmienną Angular do ng-class i to jest klasa, która zostanie użyta dla tego elementu.
Przykład demonstracji ngClass przy użyciu składni łańcuchowej
ngClass przy użyciu składni macierzy
Jest to podobne do metody składni łańcuchowej, z tym że możesz zastosować wiele klas.
ngClass przy użyciu wyrażenia ewaluowanego
Bardziej zaawansowaną metodą używania ngClass (i tej, której prawdopodobnie będziesz używać najczęściej) jest ocena wyrażenia. Działa to w ten sposób, że jeśli zmienna lub wyrażenie oblicza wartość
true
, możesz zastosować określoną klasę. Jeśli nie, klasa nie zostanie zastosowana.Przykład ngClass z wykorzystaniem wyrażenia ewaluowanego
ngClass Korzystanie z wartości
Jest to podobne do oceny wyrażonej metody, z tą różnicą, że możesz porównać wiele wartości z jedyną zmienną.
ngClass Korzystanie z operatora trójskładnikowego
Operator trójskładnikowy pozwala nam użyć skróconej nazwy do określenia dwóch różnych klas, jednej, jeśli wyrażenie jest prawdziwe, a drugiej dla fałszu. Oto podstawowa składnia dla operatora trójskładnikowego:
Ocena pierwszej, ostatniej lub określonej liczby
Jeśli używasz
ngRepeat
dyrektywę i chcesz zastosować do klasfirst
,last
albo liczby określonej w wykazie, można użyć specjalnych właściwościngRepeat
. Należą do nich$first
,$last
,$even
,$odd
, i kilka innych. Oto przykład, jak z nich korzystać.źródło