У меня есть массив объектов, которые я показываю в своем приложении Angular, используя ng-repeat
. Я фильтрую элементы, используя filter
и значение ввода поиска. Он работает так, как ожидалось. Но у меня есть опция "выбрать все" / "отменить выбор", и я хочу только выбрать видимые элементы в списке (те, которые соответствуют текущим критериям поиска).
Не выполняя такую же логику в моем контроллере (т.е. используя indexOf
значение поиска для каждого из моих объектов), как я могу определить, какие элементы в настоящее время отфильтрованы ng-repeat
/filter
?
Мой взгляд:
<input type="text" ng-model="searchValue">
<input type="checkbox" ng-model="checkAll" ng-change="toggleAll()">
<tr ng-repeat="item in items | filter:searchValue">
<td>{{item.id}}</td>
<td>{{item.name}}</td>
</tr>
Функция в моем контроллере:
$scope.toggleAll() {
for(var i in $scope.items){
// how can I tell if this item is filtered out in the view?
}
}
Я значительно упростил свои примеры кода здесь для простоты, так как этот вопрос не нуждается в более подробных деталях. Есть ли способ сделать то, что я думаю, или мне нужно снова выполнить "поиск"?