AngularJS - 无法使用ngRepeat orderBy对DateTime进行排序

时间:2016-12-29 06:05:50

标签: angularjs datetime angularjs-ng-repeat angular-filters angularjs-orderby

在SO上阅读了大量帖子(post1post2post3 ...)并使用Google搜索,我仍然无法弄清楚如何对我内部的日期时间进行排序NG-重复。

以下是我所做的:

我的index.html中的ng-repeat:

<div ng-repeat="oneItem in groupesItems.ITEMS | orderBy:'-myDate'" class="item">
                                        ...
 <div class="course-date">{[{oneItem.myDate | date:'dd MMMM yyyy hh : mm'}]}</div>
                                        ...
</div>

我还读过我要将myDate转换为Date对象,因为Angular认为它是一个字符串。所以在我的角度控制器中,这就是我所做的:

($scope.groupesItems.ITEMS).forEach(function(data){
        data.myDate = new Date(data.myDate);
    });

但没有任何效果!

请帮忙!我忽略了什么?

1 个答案:

答案 0 :(得分:4)

尝试通过temp方法使用一些getTime变量:

<div ng-repeat="oneItem in groupesItems.ITEMS | orderBy:'-temp'" class="item">
    <div class="course-date">{[{oneItem.myDate | date:'dd MMMM yyyy hh : mm'}]}</div>
</div>

使用Javascript:

($scope.groupesItems.ITEMS).forEach(function(data){
     data.temp = new Date(data.myDate).getTime();
});

此外,您可以在reverse之后尝试true orderBy:'myDate':而无需更改javascript部分:

<div ng-repeat="oneItem in groupesItems.ITEMS | orderBy:'myDate':true" class="item">
    <div class="course-date">{[{oneItem.myDate | date:'dd MMMM yyyy hh : mm'}]}</div>
</div>