【问题标题】:AngularJS - Can't sorted DateTime with ngRepeat orderByAngularJS - 无法使用 ngRepeat orderBy 对 DateTime 进行排序
【发布时间】:2017-05-13 10:37:54
【问题描述】:

在阅读了大量关于 SO(post1post2post3 ...)的帖子并在谷歌上搜索之后,我仍然无法弄清楚如何在我的 ng-repeat 中对日期时间进行排序。

这是我所做的:

我的 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);
    });

但没有任何效果!

请帮忙!我忽略了什么?

【问题讨论】:

  • 第一次检查;你有没有看到你在控制台中获得了什么数据,如果其中包含 myDate?
  • $scope.groupesItems 包含什么?

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


【解决方案1】:

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

<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 after 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>

【讨论】:

  • 谢谢,效果很好:)。但是我的代码遗漏了什么?
  • 在你的情况下reverse 是答案。查看更新的答案。
猜你喜欢
  • 1970-01-01
  • 2016-07-22
  • 2016-01-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-08-10
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多