我使用ng-repeat以下列方式打印出一个列表:
<ul ng-controller="myController">
<li ng-repeat="somename in somenames">
<a>{{ somename.name }}</a>
</li>
</ul>
并且值来自控制器,如:
myApp.controller('myController', ['$scope',
function($scope) {
$scope.somenames = [{ name: 'group1'},{name: 'group2'},{name: 'admin'},{name: 'group4'}];
}
]);
我想实现一个过滤器,这样值'admin'始终保留在列表的顶部,其余的名称按字母顺序排序。这是我目前关于jsfiddle的工作:http://jsfiddle.net/ADukg/3353/(没什么,我有点卡住)。有什么帮助吗?
答案 0 :(得分:1)
你去了:
myApp.filter('FirstAdminThenAlphabetic', function () {
return function (array, order) {
var comparator;
if (order === 'descending') {
comparator = function (elm1, elm2) {
return elm1.name < elm2.name;
}
} else {
comparator = function (elm1, elm2) {
return elm1.name > elm2.name;
}
}
return array.filter(function (elm) {
return elm.name === 'admin';
}).concat(
array.filter(function (elm) {
return elm.name !== 'admin';
}).sort(comparator)
);
};
});
您基本上会过滤掉所有管理员并对该列表进行排序,而不是将其连接到您过滤除管理员以外的任何内容的列表。我添加了一个升序或降序的函数。 jsfiddle