Так что, если у меня есть массив:Можно ли фильтровать angular.js путем размещения в другом массиве?
$scope.letters =
[{"id":"a"},
{"id":"b"},
{"id":"c"}];
И еще один массив
$scope.filterBy = ["b","c","d"];
И я хочу, чтобы иметь некоторые нг-повтор для фильтрации $ scope.letters лишь на предметы, которые появляются в $ filterBy.
Я хочу, чтобы иметь возможность сделать что-то эффект:
<span ng-repeat="{{letter in letters|filter: letter.id in filterBy }} > {{letter.id}} </span>
И есть распечатать б,
Я знаю, что это действительно глупый пример, но есть способ фильтровать выражение angular.js на основе содержимого другого объекта массива?
filterLetters() будет вызван цикл _every_ digest. Поэтому, если у вас есть поле ввода с использованием ng-модели в вашем представлении, это означает каждое нажатие клавиши. Было бы лучше сохранить результаты фильтра в новом свойстве $ scope. Используйте $ watch() es для обновления результатов фильтра, если «буквы» или «filterBy» изменяются. –
Хороший вопрос. Спасибо за совет. – ValeriiVasin
Хотя это будет работать (при условии, что ваше приложение очень простое), я бы не рекомендовал использовать этот подход, как упоминает @MarkRajcok, он называется каждым циклом дайджест, что означает, что производительность ужасна, и я получал ошибки с угловыми, подобными «Ошибка: [$ rootScope: infdig] 10 $ digest() итераций достигнуто. Отмена! " –