orderby date angularjs ng-repeat

时间:2016-09-04 18:51:13

标签: angularjs date angularjs-ng-repeat ng-repeat angularjs-orderby

我试图订购' date'与ng-repeat一起但我的日期格式为" date":" Sun,2016年9月1日08:47:53 -0400"。我尝试使用momentjs,但我得到了一个错误的列表。

请问我如何按日期订购

http://codepen.io/netwrkx/pen/WGbwgY?editors=101

<tr ng-repeat="expense in expenses | orderBy:'date'">
    <td>{{expense.name}}</td>
    <td>{{expense.amount}}</td>
    <td>{{expense.date |  amTimeAgo}} </td> 
</tr>

2 个答案:

答案 0 :(得分:2)

您可以创建自定义过滤器dateOrder,为过滤器提供输入。

JS:

.filter('dateOrder',function(){

   return function(data){ 
     angular.forEach(data,function(val,key){
       val.dateTimestamp = new Date(val.date).getTime()

     });
     return data; 

   }  
});

将您的html定义为:

<tr ng-repeat="expense in expenses | dateOrder |orderBy :'dateTimestamp'">

这是工作codepen

答案 1 :(得分:1)

<tr ng-repeat="expense in expenses | orderBy:compareDateFunc">

$scope.compareDateFunc = function(dt) {
  return new Date(dt.date);
}