Я использую groupBy от angular-filter для группировки массива объектов по их дате.Angularjs groupBy + orderBy
<div ng-repeat="(day, dayEvents) in events | groupBy: 'date')">
<h3>{{ day | date: mediumDate }}</h3>
</div>
Который производит следующее:
Feb 9, 2015
Feb 10, 2015
Feb 11, 2015
Feb 12, 2015
Как я могу изменить порядок, чтобы начать с самого последнего момента? При печати на консоли массив печатается с заказом я хочу:
Object {
1423699200000: Array[1],
1423612800000: Array[7],
1423526400000: Array[11],
1423440000000: Array[1]
}
Я также написал пользовательский фильтр, чтобы изменить порядок после GroupBy:
.filter("reverseOrder", function() {
function sortNumber(a,b) {
return parseInt(b) - parseInt(a);
}
return function(collection) {
var keys = Object.keys(collection).sort(sortNumber);
var reveredCollection= {};
var length=collection.length;
angular.forEach(keys, function(key) {
reveredCollection[key] = collection[key];
});
return reveredCollection;
}
})
который я применил, как это:
<div ng-repeat="(day, dayEvents) in events | groupBy: 'date' | reverseOrder)">
<h3>{{ day | date: mediumDate }}</h3>
</div>
По-прежнему, похоже, что фильтр возврата не оказывает никакого влияния на отображение элементов. – Shakur