2013-04-28 99 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函數並選擇一個參數來從