ng-repeat: ограничение до 10 самых последних за исключением

0

У меня есть несортированный массив объектов:

[{ 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'">

как я могу сохранить объекты с отмененным тегом вверху?

  • 0
    Вам нужно будет использовать пользовательский фильтр и выполнить собственную сортировку, прежде чем возвращать массив из этой функции фильтра.
Теги:

1 ответ

1
<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;
    };
});
  • 0
    @charlietfl: Спасибо ... изменил это ....
  • 1
    По какой-то причине я никогда не думал об использовании unshift() и вместо этого у меня был бы ужасный sort() ... просто так +1

Ещё вопросы

Сообщество Overcoder
Наверх
Меню