Angular orderBy object possible? Angular orderBy object possible? angularjs angularjs

Angular orderBy object possible?


You should be able to define a custom sort function that sorts by any item in your object. The key bit is to convert the object to an array in the filter function.

Here's an example:

app.filter('orderByDayNumber', function() {  return function(items, field, reverse) {    var filtered = [];    angular.forEach(items, function(item) {      filtered.push(item);    });    filtered.sort(function (a, b) {      return (a[field] > b[field] ? 1 : -1);    });    if(reverse) filtered.reverse();    return filtered;  };});

You would then call it like this:

<div ng-repeat="(key, val) in cal | orderByDayNumber: 'day' ">

Note, you shouldn't write val.day as that is assumed.

Look at this great blog post here for more info.

EDIT: In fact, it looks like your structure is actually already an array, so while this technique will still work, it may not be necessary - it might have just been the way you were adding the parameter to orderBy that was causing issues.