2013-04-28 98 views
124
<div class="recent" ng-repeat="reader in 
    (filteredItems = (book.reader | orderBy: 'created_at' | limitTo: 1))"> 
</div> 

所以这本书来自于休息api,它附有许多读者。我想得到'最近'的读者。AngularJs中的日期降序排列

created_at字段具有将用户识别为最近的值。但上面的代码给了我最老的读者。所以订单需要被倒置?有没有办法按降序排序?

回答

191

根据documentation,您可以使用reverse参数。

filter:orderBy(array, expression[, reverse]); 

您的过滤器更改为:

orderBy: 'created_at':true 
+20

注意它的':'不是一个逗号。 (对于其他不关心的人) – ReactiveRaven 2013-07-15 13:55:20

+1

如果你想要一个排序按钮,你可以用sortDirection替换true。然后在你的作用域中设置$ scope.sortDirection = true。点击按钮看起来像ng-click =“sortDirection =!sortDirection” – mbokil 2016-02-23 17:38:04

+1

这些仅适用于在单个页面中具有完整表格数据的页面,但它不适用于分页.. – ANK 2016-05-07 11:39:24

162

您可以前缀论点orderBy以“ - ”有降序排列,而不是上升的。我会这样写:

<div class="recent" 
    ng-repeat="reader in book.reader | orderBy: '-created_at' | limitTo: 1"> 
</div> 

这也在过滤器orderBy的文档中说明。

+4

谢谢,这是一个不错的快速和简单的方法来扭转秩序。 – LukeP 2014-10-24 16:36:42

+0

清除语法。我喜欢 – 2016-07-19 14:38:01

16

和代码示例:

<div ng-app> 
    <div ng-controller="FooController"> 
     <ul ng-repeat="item in items | orderBy:'num':true"> 
      <li>{{item.num}} :: {{item.desc}}</li> 
     </ul> 
    </div> 
</div> 

和JavaScript:

function FooController($scope) { 
    $scope.items = [ 
     {desc: 'a', num: 1}, 
     {desc: 'b', num: 2}, 
     {desc: 'c', num: 3}, 
    ]; 
} 

会给你:

3 :: c 
2 :: b 
1 :: a 

上的jsfiddle:http://jsfiddle.net/agjqN/

39

也许这可以USEF ul对于某人:

在我的情况下,我得到一个对象数组,每个对象都包含一个由Mongoose设置的日期。

我用:

ng-repeat="comment in post.comments | orderBy : sortComment : true" 

而定义的函数:

$scope.sortComment = function(comment) { 
    var date = new Date(comment.created); 
    return date; 
}; 

这为我工作。

+1

谢谢。我的日期是以MMMM dd,YYYY格式输入的字符串,我无法弄清楚如何使用角度来正确排序它们,除非我使用构造日期对象的方法。像魅力一样工作。 – Zargoon 2015-03-10 07:06:07

+0

这是正确的方法..我们可以使用这种方法在任何日期格式..谢谢老板 – Jethik 2016-09-13 06:40:10

+0

我爱你!谢谢! – 2017-11-01 05:19:47

2

在我的情况下,orderBy由一个选择框决定。我更喜欢路德维希的反应,因为你可以在选择的选项,例如设置排序方向:

 $scope.options = [ 
      { label: 'Title', value: 'title' }, 
      { label: 'Newest', value: '-publish_date' }, 
      { label: 'Featured', value: '-featured' } 
     ]; 

标记:

<select ng-model="orderProp" ng-options="opt as opt.label for opt in options"></select> 
<ul> 
    <li ng-repeat="item in items | orderBy:orderProp.value"></li> 
</ul> 
+1

这似乎不适用于自定义排序功能。有没有办法在使用自定义orderBy函数并选择一个参数来从