AngularJS : Sorting

by Adrianus Kleemans

HTML

<body ng-app="TestApp" ng-controller="TestController">
Normale sortierung:
<ul>
  <li ng-repeat="element in mylist | orderBy:'key'">{{element}}</li>
</ul>

Mit Filter:
<ul>
  <li ng-repeat="element in (mylist|orderBy:'key'|emptyToEnd:'key')">{{element}}</li>
</ul>

</body>

JavaScript

angular.module('TestApp', [])
.controller('TestController', function ($scope) {
	$scope.mylist = [ {key: "m"}, {key: "o"}, {key: "ZZZZZ"}, {key: "Hello Fiddle!"},  {key: null}, {key: 3}, {key: undefined}, {key: ''}, {key: []}, {key: {}} ];
 
})
.filter('emptyToEnd', function () {
    return function (array, key) {
        if(!angular.isArray(array)) return;
        var present = array.filter(function (item) {
            return item[key];
        });
        var empty = array.filter(function (item) {
            return !item[key]
        });
        return present.concat(empty);
    };
});