Estou criando uma lista usando ng-repeat algo como isto
<div ng-repeat="file in files">
{{file.name}}
</div>
Mas apenas para o último elemento, gostaria de incluir uma classe ( <div class="last">test</div>
). como posso conseguir isso usando ng-repeat?
Respostas:
Você pode usar
$last
variável dentro dang-repeat
diretiva. Dê uma olhada no doc .Você pode fazer assim:
Onde
computeCssClass
é a função dacontroller
qual recebe argumento único e retorna'last'
ounull
.Ou
fonte
<div ng-repeat="file in files" ng-class="{last: $last}"> {{file.name}} </div>
É mais fácil e limpo fazê-lo com CSS.
HTML:
CSS:
O
:last-of-type
selector é suportado por 98% de navegadoresfonte
ng-repeat
é seguido por<div class="file"><!-- dummy for creating new element --></div>
, e você gostaria de separar a lista de divs .file existentes .ng-repeat
elementos para diferenciá-los a partir da fugadiv
Para elaborar a resposta de Paulo, esta é a lógica do controlador que coincide com o código do modelo.
Também é importante notar que você realmente deve evitar esta solução, se possível. Por natureza, o CSS pode lidar com isso, criar uma solução baseada em JS é desnecessário e não tem desempenho. Infelizmente, se você precisar oferecer suporte ao IE8>, esta solução não funcionará para você ( consulte os documentos de suporte do MDN ).
Solução somente CSS
fonte
Isso funciona para mim! Boa sorte!
fonte
Você pode usar o
limitTo
filtro com-1
para encontrar o último elementoExemplo :
fonte
A resposta de Fabian Perez funcionou para mim, com uma pequena mudança
O html editado está aqui:
<div ng-repeat="file in files" ng-class="!$last ? 'other' : 'class-for-last'"> {{file.name}} </div>
fonte