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);
};
});