我正在使用类似这样的 ng-repeat 创建一个列表
<div ng-repeat="file in files">
{{file.name}}
</div>
但仅对于最后一个元素,我希望在其中包含一个类 ( <div class="last">test</div>
)。我如何使用 ng-repeat 来实现这一点?
我正在使用类似这样的 ng-repeat 创建一个列表
<div ng-repeat="file in files">
{{file.name}}
</div>
但仅对于最后一个元素,我希望在其中包含一个类 ( <div class="last">test</div>
)。我如何使用 ng-repeat 来实现这一点?
您可以在指令中使用$last
变量。ng-repeat
看看doc。
你可以这样做:
<div ng-repeat="file in files" ng-class="computeCssClass($last)">
{{file.name}}
</div>
wherecomputeCssClass
函数controller
接受唯一参数并返回'last'
or null
。
或者
<div ng-repeat="file in files" ng-class="{'last':$last}">
{{file.name}}
</div>
使用 CSS 更容易和更清洁。
HTML:
<div ng-repeat="file in files" class="file">
{{ file.name }}
</div>
CSS:
.file:last-of-type {
color: #800;
}
详细说明 Paul 的回答,这是与模板代码相吻合的控制器逻辑。
// 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;
};
还值得注意的是,如果可能,您确实应该避免使用此解决方案。从本质上讲,CSS 可以处理这个问题,制作基于 JS 的解决方案是不必要的,而且性能不佳。不幸的是,如果您需要支持 IE8>,此解决方案将不适合您(请参阅 MDN 支持文档)。
纯 CSS 解决方案
// 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>
这对我行得通!祝你好运!
您可以使用limitTo
过滤器-1
来查找最后一个元素
示例:
<div ng-repeat="friend in friends | limitTo: -1">
{{friend.name}}
</div>
Fabian Perez 给出的答案对我有用,但有一点改变
编辑后的 html 在这里:
<div ng-repeat="file in files" ng-class="!$last ? 'other' : 'class-for-last'">
{{file.name}}
</div>