Я обнаружил проблемы при применении классов внутри элементов таблицы, когда один класс уже был применен ко всей таблице (например, цвет, примененный к нечетным строкам <myClass tbody tr:nth-child(even) td>
). Кажется , что , когда вы проверяете элемент с Инструментами разработчика , то element.style
не имеет никакого стиля назначенный. Поэтому вместо использования ng-class
я попытался использовать ng-style
, и в этом случае новый атрибут CSS появляется внутри element.style
. Этот код прекрасно работает для меня:
<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 - это то, что я оцениваю, и в каждом случае я применяю стиль к каждому в <td>
зависимости от myvar значения , который переписывает текущий стиль, применяемый классом CSS для всей таблицы.
ОБНОВИТЬ
Если вы хотите применить класс к таблице, например, при посещении страницы или в других случаях, вы можете использовать эту структуру:
<li ng-class="{ active: isActive('/route_a') || isActive('/route_b')}">
По сути, нам нужно активировать ng-класс - это класс для применения и операторы true или false. True применяет класс, а false - нет. Итак, здесь у нас есть две проверки маршрута страницы и ИЛИ между ними, поэтому, если мы находимся в /route_a
ИЛИ, мы находимся route_b
, активный класс будет применен.
Это работает просто имея логическую функцию справа, которая возвращает истину или ложь.
Итак, в первом примере стиль ng обусловлен тремя утверждениями. Если все они ложны, стиль не применяется, но, следуя нашей логике, будет применен, по крайней мере, один, поэтому логическое выражение проверит, какое сравнение переменных является истинным, и поскольку непустой массив всегда истинен, это будет оставил массив в качестве возврата и только с одним значением true, учитывая, что мы используем OR для всего ответа, оставшийся стиль будет применен.
Кстати, я забыл дать вам функцию isActive ():
$rootScope.isActive = function(viewLocation) {
return viewLocation === $location.path();
};
НОВОЕ ОБНОВЛЕНИЕ
Вот вам кое-что, что я считаю действительно полезным. Когда вам нужно применить класс в зависимости от значения переменной, например, значок в зависимости от содержимого div
, вы можете использовать следующий код (очень полезно в ng-repeat
):
<i class="fa" ng-class="{ 'fa-github' : type === 0,
'fa-linkedin' : type === 1,
'fa-skype' : type === 2,
'fa-google' : type === 3 }"></i>
Иконки от Font Awesome