AngularJS - не может сортировать DateTime с помощью ngrepeat orderBy


После прочтения тонны поста на SO (post1, post2, post3 ...) и гугля, я все еще не могу понять, как сортировать даты внутри моего ng-повтора.

Вот что я сделал:

Ng-повтор в моем указателе.html:

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

1 ответ:

Попробуйте использовать некоторую переменную 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>