Ich erstelle eine Liste mit ng-repeat so etwas
<div ng-repeat="file in files">
{{file.name}}
</div>
Aber nur für das letzte Element hätte ich gerne eine class ( <div class="last">test</div>
). Wie kann ich dies mit ng-repeat erreichen?
Ich erstelle eine Liste mit ng-repeat so etwas
<div ng-repeat="file in files">
{{file.name}}
</div>
Aber nur für das letzte Element hätte ich gerne eine class ( <div class="last">test</div>
). Wie kann ich dies mit ng-repeat erreichen?
Antworten:
Sie können $last
Variablen innerhalb der ng-repeat
Direktive verwenden. Schauen Sie sich doc an .
Sie können es so machen:
<div ng-repeat="file in files" ng-class="computeCssClass($last)">
{{file.name}}
</div>
Wo computeCssClass
ist die Funktion, controller
die alleiniges Argument nimmt und 'last'
oder zurückgibt null
.
Oder
<div ng-repeat="file in files" ng-class="{'last':$last}">
{{file.name}}
</div>
<div ng-repeat="file in files" ng-class="{last: $last}"> {{file.name}} </div>
Mit CSS ist es einfacher und sauberer.
HTML:
<div ng-repeat="file in files" class="file">
{{ file.name }}
</div>
CSS:
.file:last-of-type {
color: #800;
}
Die :last-of-type
Auswahl wird derzeit von 98% der Browser unterstützt
ng-repeat
gefolgt wird <div class="file"><!-- dummy for creating new element --></div>
, und Sie möchten die Liste der vorhandenen .file- Divs trennen .
ng-repeat
Elemente setzen, um sie von den div
Um auf Pauls Antwort einzugehen, ist dies die Controller-Logik, die mit dem Vorlagencode übereinstimmt.
// HTML
<div class="row" ng-repeat="thing in things">
<div class="well" ng-class="isLast($last)">
<p>Data-driven {{thing.name}}</p>
</div>
</div>
// CSS
.last { /* Desired Styles */}
// Controller
$scope.isLast = function(check) {
var cssClass = check ? 'last' : null;
return cssClass;
};
Es ist auch erwähnenswert, dass Sie diese Lösung nach Möglichkeit wirklich vermeiden sollten. Von Natur aus kann CSS damit umgehen, sodass eine JS-basierte Lösung nicht erforderlich und nicht performant ist. Wenn Sie IE8 unterstützen müssen, funktioniert diese Lösung leider nicht für Sie ( siehe MDN-Supportdokumente ).
Nur-CSS-Lösung
// Using the above example syntax
.row:last-of-type { /* Desired Style */ }
<div ng-repeat="file in files" ng-class="!$last ? 'class-for-last' : 'other'">
{{file.name}}
</div>
Das ist für mich in Ordnung! Viel Glück!