J'ai rencontré des problèmes lors de l'application de classes à l'intérieur des éléments de table lorsque j'avais déjà appliqué une classe à l'ensemble de la table (par exemple, une couleur appliquée aux lignes impaires <myClass tbody tr:nth-child(even) td>
). Il semble que lorsque vous inspectez l'élément avec les outils de développement , element.style
aucun style ne soit attribué. Donc, au lieu d'utiliser ng-class
, j'ai essayé d'utiliser ng-style
, et dans ce cas, le nouvel attribut CSS apparaît à l'intérieur element.style
. Ce code fonctionne très bien pour moi:
<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 est ce que j'évalue , et dans chaque cas, j'applique un style à chacun en <td>
fonction de la valeur de myvar , qui écrase le style actuel appliqué par la classe CSS pour la table entière.
METTRE À JOUR
Si vous souhaitez appliquer une classe à la table par exemple, lorsque vous visitez une page ou dans d'autres cas, vous pouvez utiliser cette structure:
<li ng-class="{ active: isActive('/route_a') || isActive('/route_b')}">
Fondamentalement, ce dont nous avons besoin pour activer une classe ng, c'est la classe à appliquer et une déclaration vraie ou fausse. True applique la classe et false non. Nous avons donc ici deux vérifications de l'itinéraire de la page et un OU entre eux, donc si nous sommes dans /route_a
OU nous sommes dans route_b
, la classe active sera appliquée.
Cela fonctionne simplement avec une fonction logique à droite qui renvoie vrai ou faux.
Ainsi, dans le premier exemple, le style ng est conditionné par trois instructions. Si tous sont faux, aucun style n'est appliqué, mais selon notre logique, au moins un va être appliqué, donc, l'expression logique vérifiera quelle comparaison de variable est vraie et parce qu'un tableau non vide est toujours vrai, cela laissé un tableau en retour et avec un seul vrai, étant donné que nous utilisons OU pour toute la réponse, le style restant sera appliqué.
Au fait, j'ai oublié de vous donner la fonction isActive ():
$rootScope.isActive = function(viewLocation) {
return viewLocation === $location.path();
};
NOUVELLE MISE À JOUR
Voici quelque chose que je trouve vraiment utile. Lorsque vous devez appliquer une classe en fonction de la valeur d'une variable, par exemple, une icône en fonction du contenu de la div
, vous pouvez utiliser le code suivant (très utile dans ng-repeat
):
<i class="fa" ng-class="{ 'fa-github' : type === 0,
'fa-linkedin' : type === 1,
'fa-skype' : type === 2,
'fa-google' : type === 3 }"></i>
Icônes de Font Awesome