фильтрация вложенных ng-repeat с внешним свойством объекта ng-repeat

Я пытаюсь сделать два вложенных ng-повтора с двумя json, где второй ng-repeat фильтруется по параметру первого ng-repeat.

Первый json $scope.matches содержит информацию о каждом матче чемпионата мира. Второй json @scope.predictions содержит прогнозы каждого пользователя для каждой игры.

Теперь я хочу повторить матч в качестве заголовка, а затем перечислить все прогнозы для этой конкретной игры. Повторяйте, пока все прогнозы не будут перечислены под нужной игрой. У меня есть match.matchnumber = предсказание.matchnumber.

В моем плункере http://plnkr.co/edit/GQmYxZiO53nkIBVczaS9?p=preview вы видно, что фильтр не работает, так как применяется ко всем параметрам объекта, а не только к matchnumber.

Каков самый простой способ сделать эту работу? Может быть, мне следует объединить jsons в отфильтрованный массив? Как бы это сделать по-умному


person TheGuvnor    schedule 15.06.2014    source источник


Ответы (1)


Чтобы отфильтровать по определенному свойству, вам нужно передать объект с именем свойства в качестве ключа и условием поиска в качестве значения:

ng-repeat="p in predictions | filter:{matchnumber: match.matchnumber}"

Приведенный выше фильтр будет возвращать только те прогнозы, свойство matchnumber которых соответствует match.matchnumber.


См. также эту обновленную демонстрацию.


Тем не менее, вероятно, не очень эффективно перебирать все прогнозы для каждого совпадения в каждом цикле дайджеста. Лучшим подходом было бы обработать оба JSON и создать третий, содержащий все необходимые данные, так что фильтрация в представлении не требуется.

person gkalpak    schedule 15.06.2014
comment
Спасибо за быстрый ответ! Это было именно то, что мне было нужно! - person TheGuvnor; 16.06.2014