我如何能得到一个反向数组在角? 我试图使用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>

当前回答

这是我使用的:

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

更新:

对于老版本的Angular,我的答案是OK的。 现在,你应该使用

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

or

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

从https://stackoverflow.com/a/26635708/1782470

其他回答

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

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

视图演示

我建议使用这样的自定义过滤器:

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

然后可以这样使用:

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

看它在这里工作:活塞演示


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

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

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

这是因为您使用的是JSON对象。当你面对这样的问题时,把JSON对象改为JSON数组对象。

例如,

{"India":"IN","America":"US","United Kingdon":"UK"} json object
[{"country":"India","countryId":"IN"},{"country":"America","countryId":"US"},{"country":"United Kingdon","countryId":"UK"}] 

我补充了一个没有人提到的答案。如果你有服务器,我会试着让服务器来做。如果服务器返回大量记录,客户端过滤可能是危险的。因为您可能会被迫添加分页。如果你有来自服务器的分页,那么客户端筛选顺序,将在当前页面。这会让最终用户感到困惑。因此,如果您有一个服务器,那么将订单与调用一起发送,并让服务器返回它。