Je crée une liste en utilisant ng-repeat quelque chose comme ça
<div ng-repeat="file in files">
{{file.name}}
</div>
Mais pour le dernier élément seulement, je voudrais avoir une classe ( <div class="last">test</div>
) incluse. comment puis-je y parvenir en utilisant ng-repeat?
Réponses:
Vous pouvez utiliser une
$last
variable dans lang-repeat
directive. Jetez un œil à doc .Vous pouvez le faire comme ceci:
Où
computeCssClass
est la fonctioncontroller
dont prend le seul argument et retourne'last'
ounull
.Ou
la source
<div ng-repeat="file in files" ng-class="{last: $last}"> {{file.name}} </div>
C'est plus facile et plus propre de le faire avec CSS.
HTML:
CSS:
Le
:last-of-type
sélecteur est actuellement pris en charge par 98% des navigateursla source
ng-repeat
est suivi de<div class="file"><!-- dummy for creating new element --></div>
, et que vous souhaitez mettre à part la liste des divs .file existants .ng-repeat
éléments pour les différencier des derniersdiv
Pour développer la réponse de Paul, c'est la logique du contrôleur qui coïncide avec le code du modèle.
Il est également intéressant de noter que vous devriez vraiment éviter cette solution si possible. Par nature, CSS peut gérer cela, créer une solution basée sur JS est inutile et non performante. Malheureusement, si vous devez prendre en charge IE8>, cette solution ne fonctionnera pas pour vous ( voir la documentation de support MDN ).
Solution CSS uniquement
la source
Ça marche pour moi! Bonne chance!
la source
Vous pouvez utiliser le
limitTo
filtre avec-1
pour trouver le dernier élémentExemple :
la source
La réponse de Fabian Perez a fonctionné pour moi, avec un petit changement
Le HTML édité est ici:
<div ng-repeat="file in files" ng-class="!$last ? 'other' : 'class-for-last'"> {{file.name}} </div>
la source