2015-10-14 37 views
0

我有这张表。我想按日期(日,月)排序。我可以按照下面的代码进行排序,但我无法通过orderBy:['day','month']排序日期和月份,因此它显示2015年7月8日之前的6/9/2015。可以给我提示线索有什么不对吗?OrderBy不适用于ng-repeat中的多个属性

<h1>Reservations</h1> 

<table class="table"> 
    <thead> 
     <tr> 
      <th ng-repeat="heading in data1.headings">{{heading}}</th> 
     </tr> 
    </thead> 
    <tbody> 
     <tr ng-repeat="reservation in reservations|orderBy:'day'" ng-show="reservation.is_approved"> 
      <td>{{reservation.id}}</td> 
      <td>{{reservation.user.fb_id}}</td> 
      <td>{{reservation.user.name}}</td> 
      <td>{{reservation.user.phone}}</td> 
      <td>{{reservation.user.email}}</td> 
      <td>{{reservation.day}}/{{reservation.month}}/{{reservation.year}}</td>   
     </tr> 
    </tbody> 
</table> 
+1

你想按月先排序吗?那么它应该是:'orderBy:['month','day']' –

+0

haha​​ha。我不知道为什么我不认为它在第一位。有用。 – hhs

回答

0

您需要将您的日期转换为Javascript日期对象,然后才能完成正确的排序。

所以在你做的控制器:(更新你的需求)

reservations[i].date = new Date(year, month, day); 

您可以使用many formats创建JavaScript日期对象。

之后,您应该能够按日期正确排序。

<tr ng-repeat="reservation in reservations|orderBy:'date'" ng-show="reservation.is_approved"> 
0

发生这种情况是因为orderBy不知道注入日期。它只是按数字排序。您应该添加到您的应用程序过滤器来分析你的数据,正确的日期和排序的数组:

app.filter('filterByDate', function filterByDate() { 
    return function(array, descending) { 
    var order = descending ? 1 : -1; 

    array.sort(function(a, b) { 
     return (new Date(b.year, b.month, b.day) - new Date(a.year, a.month, a.day)) * order; 
    }); 

    return array; 
    }; 
}); 

,并使用此类似:

<tr ng-repeat="reservation in reservations|filterByDate" ng-show="reservation.is_approved"> 
    <td>{{reservation.id}}</td> 
    <td>{{reservation.user.fb_id}}</td> 
    <td>{{reservation.user.name}}</td> 
    <td>{{reservation.user.phone}}</td> 
    <td>{{reservation.user.email}}</td> 
    <td>{{reservation.day}}/{{reservation.month}}/{{reservation.year}}</td>   
</tr> 

,或者如果你想降添加参数排序日期“真”来过滤:

<tr ng-repeat="reservation in reservations|filterByDate:true" ng-show="reservation.is_approved"> 
    <td>{{reservation.id}}</td> 
    <td>{{reservation.user.fb_id}}</td> 
    <td>{{reservation.user.name}}</td> 
    <td>{{reservation.user.phone}}</td> 
    <td>{{reservation.user.email}}</td> 
    <td>{{reservation.day}}/{{reservation.month}}/{{reservation.year}}</td>   
</tr> 
相关问题