Я виявив проблеми при застосуванні класів всередині таблицю елементів , коли я був один клас вже застосовується до всієї таблиці (наприклад, колір застосовується до непарних рядках <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 - ні. Отже, у нас є дві перевірки маршруту сторінки та АБО між ними, тож якщо ми знаходимось в /route_a
АБО, ми знаходимося route_b
, буде застосовано активний клас.
Це працює просто з логічною функцією праворуч, яка повертає значення true та false.
Так у першому прикладі стиль ng зумовлений трьома твердженнями. Якщо всі вони помилкові, не застосовується жоден стиль, але слідуючи нашій логіці, принаймні один буде застосований, тож, логічний вираз перевірить, яке порівняння змінної є істинним, і тому, що не порожній масив завжди істинний, це буде залишив масив як повернення і лише з одним істинним, враховуючи, що ми використовуємо АБО для всієї відповіді, залишився стиль.
До речі, я забув надати вам функцію 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>
Ікони з шрифту Awesome