Tworzę listę używając ng-powtórzyć coś takiego
<div ng-repeat="file in files">
{{file.name}}
</div>
Ale jeśli chodzi o ostatni element, chciałbym, aby zawierał on klasę ( <div class="last">test</div>
). jak mogę to osiągnąć używając ng-repeat?
Odpowiedzi:
Możesz użyć
$last
zmiennej wewnątrzng-repeat
dyrektywy. Spójrz na doc .Możesz to zrobić w ten sposób:
Gdzie
computeCssClass
jest funkcja,controller
która przyjmuje jedyny argument i zwraca'last'
lubnull
.Lub
źródło
<div ng-repeat="file in files" ng-class="{last: $last}"> {{file.name}} </div>
Jest to łatwiejsze i czystsze dzięki CSS.
HTML:
CSS:
:last-of-type
Selektor jest obecnie obsługiwana przez 98% przeglądarekźródło
ng-repeat
następuje po nim<div class="file"><!-- dummy for creating new element --></div>
i chcesz oddzielić listę istniejących elementów div .file .ng-repeat
elementach, aby odróżnić je od końcowychdiv
Aby rozwinąć odpowiedź Paula, jest to logika kontrolera, która pokrywa się z kodem szablonu.
Warto również zauważyć, że naprawdę powinieneś unikać tego rozwiązania, jeśli to możliwe. Z natury CSS może sobie z tym poradzić, więc tworzenie rozwiązania opartego na JS jest niepotrzebne i niewydajne. Niestety, jeśli potrzebujesz obsługi IE8> to rozwiązanie nie zadziała ( zobacz dokumentację pomocy technicznej MDN ).
Rozwiązanie tylko CSS
źródło
To działa dla mnie! Powodzenia!
źródło
Możesz użyć
limitTo
filtra-1
do znalezienia ostatniego elementuPrzykład :
źródło
Odpowiedź udzielona przez Fabiana Pereza zadziałała dla mnie, z niewielką zmianą
Edytowany html jest tutaj:
<div ng-repeat="file in files" ng-class="!$last ? 'other' : 'class-for-last'"> {{file.name}} </div>
źródło