我在应用表元素中的类时发现了问题,当我将一个类应用于整个表时(例如,应用于奇数行的颜色<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应用的当前形式整个表的类。
UPDATE
如果你想一类申请表例如,访问网页或在其他情况下,您可以使用此结构时:
<li ng-class="{ active: isActive('/route_a') || isActive('/route_b')}">
基本上,我们需要激活一个ng级是应用的类和一个真或假的陈述。 真适用类和假不适用。所以在这里,我们有网页的路线两次检查和它们之间的OR,所以如果我们在/route_a
OR我们在route_b
,该活跃类将被应用。
这只适用于在右侧返回true或false的逻辑功能。
所以在第一个例子中,ng-style受三条语句限制。如果它们都是假的,没有应用样式,但是按照我们的逻辑,至少有一个将被应用,所以,逻辑表达式将检查哪个变量比较是真的,并且因为非空数组总是为真,那将留下一个数组作为回报,并且只有一个是真实的,考虑到我们使用或作为整个回应,剩余的样式将被应用。
对了,我忘了给你的函数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
有用的文章http://tech-blog.maddyzone.com/javascript/conditionally-apply-classes-in-angularjs –