нг-повтор, который пропускает повторяющиеся свойства

0

Я хочу выполнить ng-repeat над массивом, пропуская некоторые свойства, когда они являются дубликатами предыдущей итерации.

Модель (массив событий)

[
   {
   "id": "event1",
   "date": "June 1st"
   },
   {
   "id": "event2",
   "date": "June 2nd"
   },
   {
   "id": "event3",
   "date": "June 2nd"
   },
   {
   "id": "event4",
   "date": "June 3rd"
   }
]

Поскольку вы можете видеть, что дата дублируется для event2 и event3...

HTML

<div ng-repeat="event in events">  
  <h2>{{event.date}}</h2>
  <p>{{event.id}}</p>
  <hr>
</div>

Таким образом, желаемый результат:


1 июня
event1


2 июня
event2
event3


3 июня
event4


Я думаю, это что-то вроде:

<div ng-repeat="event in events">  
  <h2 ng-if="<!--expression here-->">{{event.date}}</h2>
  <p>{{event.id}}</p>
  <hr>
</div>

Будет ли это функция моего контроллера прикреплена к переменной, вызванной в атрибуте ng-if?

И прежде всего, как бы я сформировал это выражение, чтобы делать то, что я хочу в этом случае?

Примечание. Это ТОЛЬКО рендеринг переменной даты, которую я хочу избежать, а не весь элемент ng-repeat.

Любая помощь или альтернативные предложения будут оценены.

Показать ещё 1 комментарий
Теги:
duplicates
repeat
expression
ng-repeat

1 ответ

0

Вы можете создать собственный фильтр для фильтрации уникальных элементов:

app.filter('uniq', function() {
    return function(items, param) {
        var filteredItems = [];
        items.forEach(function(item) {
            var found = filteredItems.some(function(elem) {
                return elem.param === item.param;
            });
            if(!found) {
                filteredItems.push(item);   
            }
        });
        return filteredItems; 
    }
});

Используйте его так:

event in events | uniq: 'date'

Ещё вопросы

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