Estoy creando una lista usando ng-repeat algo como esto
<div ng-repeat="file in files">
{{file.name}}
</div>
Pero solo para el último elemento, me gustaría <div class="last">test</div>
incluir una clase ( ). ¿Cómo puedo lograr esto usando ng-repeat?
Respuestas:
Puede usar
$last
variable dentro de lang-repeat
directiva. Echa un vistazo a doc .Puedes hacerlo así:
Donde
computeCssClass
es función de locontroller
que toma argumento único y devuelve'last'
onull
.O
fuente
<div ng-repeat="file in files" ng-class="{last: $last}"> {{file.name}} </div>
Es más fácil y limpio hacerlo con CSS.
HTML:
CSS:
El
:last-of-type
selector actualmente es compatible con el 98% de los navegadoresfuente
ng-repeat
es seguido por<div class="file"><!-- dummy for creating new element --></div>
, y le gustaría separar la lista de archivos .file existentes .ng-repeat
elementos para diferenciarlos del finaldiv
Para explicar la respuesta de Paul, esta es la lógica del controlador que coincide con el código de la plantilla.
También vale la pena señalar que realmente debería evitar esta solución si es posible. Por naturaleza, CSS puede manejar esto, hacer que una solución basada en JS sea innecesaria y no tenga un buen rendimiento. Desafortunadamente, si necesita admitir IE8> esta solución no funcionará para usted ( consulte los documentos de soporte de MDN ).
Solución solo para CSS
fuente
¡Funciona para mi! ¡Buena suerte!
fuente
Puede usar
limitTo
filter con-1
para encontrar el último elementoEjemplo :
fuente
La respuesta dada por Fabián Pérez funcionó para mí, con un pequeño cambio.
El html editado está aquí:
<div ng-repeat="file in files" ng-class="!$last ? 'other' : 'class-for-last'"> {{file.name}} </div>
fuente