Znalazłem problemy przy stosowaniu klas w elementach tabeli , gdy miałem już jedną klasę zastosowaną do całej tabeli (na przykład kolor zastosowany do nieparzystych wierszy <myClass tbody tr:nth-child(even) td>
). Wydaje się, że podczas inspekcji elementu z Narzędzi Projektowych , element.style
ma styl przypisany. Więc zamiast używać ng-class
, próbowałem użyć ng-style
, aw tym przypadku nowy atrybut CSS pojawia się w środku element.style
. Ten kod działa dla mnie świetnie:
<tr ng-repeat="element in collection">
[...amazing code...]
<td ng-style="myvar === 0 && {'background-color': 'red'} ||
myvar === 1 && {'background-color': 'green'} ||
myvar === 2 && {'background-color': 'yellow'}">{{ myvar }}</td>
[...more amazing code...]
</tr>
Myvar jest tym, co oceniam , iw każdym przypadku stosuję styl do każdego w <td>
zależności od wartości myvar , który zastępuje obecny styl zastosowany przez klasę CSS dla całej tabeli.
AKTUALIZACJA
Jeśli chcesz zastosować klasę do tabeli, na przykład podczas odwiedzania strony lub w innych przypadkach, możesz użyć tej struktury:
<li ng-class="{ active: isActive('/route_a') || isActive('/route_b')}">
Zasadniczo, aby aktywować klasę ng , musimy zastosować klasę oraz prawdziwe lub fałszywe oświadczenie. Prawda stosuje się do klasy, a fałsz nie. Mamy więc dwa sprawdzanie trasy strony i OR między nimi, więc jeśli jesteśmy w /route_a
OR, jesteśmy w route_b
, zastosowana zostanie klasa aktywna .
Działa to po prostu z funkcją logiczną po prawej stronie, która zwraca true lub false.
W pierwszym przykładzie styl ng jest uwarunkowany trzema instrukcjami. Jeśli wszystkie są fałszywe, nie zostanie zastosowany żaden styl, ale zgodnie z naszą logiką zostanie zastosowany co najmniej jeden, więc wyrażenie logiczne sprawdzi, które porównanie zmiennych jest prawdziwe, a ponieważ niepusta tablica jest zawsze prawdziwa, to pozostawił tablicę jako return i tylko jedna prawda, biorąc pod uwagę, że używamy OR dla całej odpowiedzi, pozostały styl zostanie zastosowany.
Nawiasem mówiąc, zapomniałem podać ci funkcję isActive ():
$rootScope.isActive = function(viewLocation) {
return viewLocation === $location.path();
};
NOWA AKTUALIZACJA
Tutaj masz coś, co uważam za bardzo przydatne. Gdy musisz zastosować klasę w zależności od wartości zmiennej, na przykład ikonę w zależności od zawartości div
, możesz użyć następującego kodu (bardzo przydatnego w ng-repeat
):
<i class="fa" ng-class="{ 'fa-github' : type === 0,
'fa-linkedin' : type === 1,
'fa-skype' : type === 2,
'fa-google' : type === 3 }"></i>
Ikony z Font Awesome