反向角 ng-重复

如何获得角度的反向数组?我正在尝试使用orderBy过滤器,但它需要一个谓词(例如“name”)来排序:

<tr ng-repeat="friend in friends | orderBy:'name':true">
      <td>{{friend.name}}</td>
      <td>{{friend.phone}}</td>
      <td>{{friend.age}}</td>
<tr>

有没有办法反转原始数组,而无需排序。诸如此类:

<tr ng-repeat="friend in friends | orderBy:'':true">
      <td>{{friend.name}}</td>
      <td>{{friend.phone}}</td>
      <td>{{friend.age}}</td>
<tr>

答案 1

我建议使用自定义过滤器,如下所示:

app.filter('reverse', function() {
  return function(items) {
    return items.slice().reverse();
  };
});

然后可以像这样使用:

<div ng-repeat="friend in friends | reverse">{{friend.name}}</div>

看到它在这里工作:Plunker演示


该过滤器可以根据您的需求进行定制。我在演示中提供了其他示例。一些选项包括在执行反向操作之前检查变量是否为数组,或者使其更宽松以允许反转更多内容(如字符串)。


答案 2

这是我使用的:

<alert ng-repeat="alert in alerts.slice().reverse()" type="alert.type" close="alerts.splice(index, 1)">{{$index + 1}}: {{alert.msg}}</alert>

更新:

我的答案对于旧版本的Angular来说是可以的。现在,您应该使用

ng-repeat="friend in friends | orderBy:'-'"

ng-repeat="friend in friends | orderBy:'+':true"

https://stackoverflow.com/a/26635708/1782470 相比