我如何能得到一个反向数组在角? 我试图使用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.3。X,你可以使用下面的方法

{{ orderBy_expression | orderBy : expression : reverse}}

按出版日期降序列出图书

<div ng-repeat="book in books|orderBy:'publishedDate':true">

来源:https://docs.angularjs.org/api/ng/filter/orderBy

其他回答

从Angular 1.4.5开始,orderBy过滤器执行稳定的排序。(参见GitHub pull request https://github.com/angular/angular.js/pull/12408)

因此,使用常量谓词和反向设置为true就足够了:

<div ng-repeat="friend in friends | orderBy:0:true">{{friend.name}}</div>

我自己对这个问题感到沮丧,所以我修改了@Trevor Senior创建的过滤器,因为我遇到了一个问题,我的控制台说它不能使用反向方法。我还想保持对象的完整性,因为这是Angular最初在ng-repeat指令中使用的。在这种情况下,我使用的输入愚蠢(键),因为控制台会感到不安,说有重复,在我的情况下,我需要跟踪$index。

过滤器:

angular.module('main').filter('reverse', function() {
    return function(stupid, items) {
    var itemss = items.files;
    itemss = itemss.reverse();  
    return items.files = itemss; 
  };
});

HTML: <div ng-repeat="item in items track by $index | reverse: items">

如果你使用的是angularjs 1.4.4及以上版本,一个简单的排序方法是使用"$index"。

 <ul>
  <li ng-repeat="friend in friends|orderBy:$index:true">{{friend.name}}</li>
</ul>

视图演示

你也可以使用.reverse()。它是一个原生数组函数

<div ngn -repeat=“朋友们的朋友。反向()”>{{朋友}</div>

简单解决方案:-(不需要做任何方法)

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