2013-10-21 30 views
0

如何使用orderBy過濾器反轉日期數組?我可以在模型本身使用.sort().reverse(),但我寧願讓角做,如果可能的使用角度orderBy過濾器反轉日期陣列

http://jsfiddle.net/V6aZH/2/

JS

var myApp = angular.module('myApp', []); 

myApp.controller('DatesCtrl', ['$scope', function($scope) { 
    $scope.dates = [ new Date(2013, 0, 1), new Date(2013, 1, 1) ]; 
}]); 

HTML

<div ng-controller="DatesCtrl"> 
    <div ng-repeat="d in dates" ng-bind="d | date:'medium'"></div> 
</div> 

預期結果

2013年2月1日12:00:00 AM
2013年1月1日12:00:00 AM

根據該文檔,我希望能夠做這樣的,但它沒有工作

<div ng-controller="DatesCtrl"> 
    <div ng-repeat="d in dates | orderBy:'d':true" ng-bind="d | date:'medium'"></div> 
</div> 

回答

1

應用過濾器時,您不能在orderBy使用d,因爲這個變量不存在:數組首先過濾,然後才進行「重複」。

您必須按照每個項目的實際值對數組進行排序。見this question

$scope.identity = angular.identity; 
$scope.dates = [new Date(2013, 0, 1), new Date(2013, 2, 1), new Date(2013, 1, 1)]; 

<div ng-repeat="d in dates | orderBy:identity:true" ng-bind="d | date:'medium'"></div> 

Fiddle

+0

啊,不知道身份。這工作,謝謝 – kenwarner