Sto usando groupBy da angular-filter al gruppo un array di oggetti da loro proprietà data.Angularjs groupBy + orderBy
<div ng-repeat="(day, dayEvents) in events | groupBy: 'date')">
<h3>{{ day | date: mediumDate }}</h3>
</div>
che produce il seguente:
Feb 9, 2015
Feb 10, 2015
Feb 11, 2015
Feb 12, 2015
Come posso invertire l'ordine di partire dalla data più recente? Quando stampo alla console l'array viene stampato con l'ordine che voglio:
Object {
1423699200000: Array[1],
1423612800000: Array[7],
1423526400000: Array[11],
1423440000000: Array[1]
}
Ho anche scritto un filtro personalizzato per invertire l'ordine dopo il 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;
}
})
che ho applicato come questo:
<div ng-repeat="(day, dayEvents) in events | groupBy: 'date' | reverseOrder)">
<h3>{{ day | date: mediumDate }}</h3>
</div>
Sempre lo stesso, sembra che il filtro di ritornare non ha alcun effetto sulla modalità di visualizzazione degli elementi .. – Shakur