当我已经将一个类应用于整个表(例如,应用于奇数行<myClass tbody tr:nth-child(even) td> 的颜色)时,我在 table 元素中应用类时发现了问题。似乎当您使用 Developer Tools 检查元素时,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 是我正在评估的内容,在每种情况下,我都会根据 myvar 值对每个 <td> 应用一个样式,这会覆盖当前应用的样式整个表格的 CSS 类。
更新
如果你想将一个类应用到表格中,例如在访问页面时或其他情况下,你可以使用这个结构:
<li ng-class="{ active: isActive('/route_a') || isActive('/route_b')}">
基本上,我们需要激活一个 ng-class 是要应用的类和一个真假语句。 True 应用类,而 false 不应用。所以这里我们对页面的路由进行了两次检查,它们之间有一个OR,所以如果我们在/route_a OR我们在route_b,active 类将被应用。
这只是在右边有一个返回真或假的逻辑函数。
所以在第一个示例中,ng-style 受三个语句的限制。如果它们都为假,则不应用样式,但按照我们的逻辑,至少要应用一个,因此,逻辑表达式将检查哪个变量比较为真,因为非空数组始终为真,这将留下一个数组作为返回值,只有一个为真,考虑到我们对整个响应使用 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的图标