У меня есть несортированный массив объектов:
[{ name: 'Daryl', interview: Sun May 19 2016 }, { name: 'John', interview: Monday May 30 2016 }, { name: 'Jim', interview: Monday May 30 2016, cancelled: true }]
Я хочу отображать максимум десять элементов, упорядоченных по дате, но отдавая предпочтение объектам с определенным свойством (т.е. Любой объект с флагом "отменено", установленным в true, будет отображаться над остальными элементами). Если я использую фильтр ng-repeat/limit:
<div ng-repeat="people in peoples | limitTo: 10 | orderBy: '-interview'">
как я могу сохранить объекты с отмененным тегом вверху?
<div ng-repeat="people in peoples |
limitTo: 10 | orderBy: '-interview' | filter:customFilter">
Ваш custom filter
ниже.
app.filter('customFilter', function() {
return function( items ) {
var filtered = [];
angular.forEach(items, function(item) {
if(item.hasOwnProperty("cancelled") && item.cancelled === true)
filtered.unshift(item);
else
filtered.push(item);
});
return filtered;
};
});
unshift()
и вместо этого у меня был бы ужасный sort()
... просто так +1