Я хочу использовать filter
in angular и хочу фильтровать несколько значений, если оно имеет одно из значений, то оно должно отображаться.
У меня есть например эта структура:
Объект, movie
который имеет свойство, genres
и я хочу отфильтровать для Action
и Comedy
.
Я знаю, что могу сделать filter:({genres: 'Action'} || {genres: 'Comedy'})
, но что делать, если я хочу фильтровать это динамически. Напримерfilter: variableX
Как установить variableX
в $scope
, когда у меня есть массив жанров , которые я должен фильтр?
Я мог бы построить его как строку, а затем сделать, eval()
но я не хочу использовать eval () ...
javascript
angularjs
angularjs-ng-repeat
JustGoscha
источник
источник
filter:({genres: 'Action'} || {genres: 'Comedy'})
даже работает? это не вangular 1.3.16
.Ответы:
Я бы просто создал собственный фильтр. Они не так сложны.
шаблон:
Отредактируйте здесь ссылку: Создание угловых фильтров
ОБНОВЛЕНИЕ : Вот скрипка , которая содержит точную демонстрацию моего предложения.
источник
Вы можете использовать функцию контроллера для фильтрации.
HTML:
источник
$scope.filteredMovies = $filter('filter')($scope.movies, $scope.filterByGenres);
Создание пользовательского фильтра может быть излишним, вы можете просто передать пользовательский компаратор, если у вас есть значения, кратные следующим:
тогда в фильтре:
источник
ng-model
в файле представления для связи с описанным фильтром? (извините, все еще учусь здесь) - я как простота вашего ответа и пытается получить его работу , но не знаете , как помечать<input>
«Sng-model
. :)Вот реализация пользовательского фильтра, который будет фильтровать данные с использованием массива значений. Он будет поддерживать несколько ключевых объектов как с массивом, так и с одним значением ключей. Как уже упоминалось, API- фильтр AngularJS API InangularJS Doc поддерживает фильтр нескольких ключей с одним значением, но ниже настраиваемый фильтр будет поддерживать ту же функцию, что и AngularJS, а также поддерживает массив значений и комбинацию как массива, так и одного значения ключей. Ниже приведен фрагмент кода,
Использование:
Вот пример скрипки с реализацией вышеупомянутого пользовательского фильтра «filterMutiple» . ::: Fiddle Пример :::
источник
length property undefined
ошибку в консоли.if (fData.length > 0){ this.filteredData = fData; }
просто на:this.filteredData = fData;
Если вы хотите фильтровать по массиву объектов, вы можете дать
filter:({genres: 'Action', key :value }.
Индивидуальное свойство будет отфильтровано по конкретному фильтру, указанному для этого свойства.
Но если вы хотите что-то наподобие фильтрации по отдельным свойствам и глобальной фильтрации для всех свойств, вы можете сделать что-то вроде этого.
~ Атула
источник
Я потратил на это некоторое время, и благодаря @chrismarx я увидел, что значение по умолчанию в angular
filterFilter
позволяет вам передавать свой собственный компаратор. Вот отредактированный компаратор для нескольких значений:И если мы хотим сделать собственный фильтр для DRY:
И тогда мы можем использовать его где угодно:
Наконец, вот вам и плункер .
Примечание. Ожидаемый массив должен содержать только простые объекты, такие как String , Number и т. Д.
источник
Вы можете использовать фильтр searchField для angular.filter
JS:
HTML:
источник
search
останавливается здесь.Вы также можете использовать,
ngIf
если позволяет ситуация:источник
Самое быстрое решение, которое я нашел, это использовать
filterBy
фильтр из angular-filter , например:Плюс в том, что angular-filter - это довольно популярная библиотека (~ 2,6 тыс. Звезд на GitHub), которая все еще активно разрабатывается и поддерживается, поэтому было бы неплохо добавить ее в свой проект в качестве зависимости.
источник
Я считаю, что это то, что вы ищете:
источник
Пожалуйста, попробуйте это
источник
Предположим, у вас есть два массива, один для фильма и один для жанра
Просто используйте фильтр как:
filter:{genres: genres.type}
Здесь жанры, являющиеся массивом и типом, имеют значение для жанра
источник
Я написал это для строк и функциональности (я знаю, что это не вопрос, но я искал его и попал сюда), возможно, его можно расширить.
Использование:
источник
Угловой или фильтр модуль
$filter('orFilter')([{..}, {..} ...], {arg1, arg2, ...}, false)
вот ссылка: https://github.com/webyonet/angular-or-filter
источник
У меня была похожая ситуация. Написание собственного фильтра сработало для меня. Надеюсь это поможет!
JS:
HTML:
источник
Вот мой пример, как создать фильтр и директиву для таблицы jsfiddle
директива получить список (данные) и создать таблицу с фильтрами
с удовольствием, если я помогу тебе
источник
Слишком поздно вступать в партию, но, может быть, это кому-то поможет:
Мы можем сделать это в два этапа: сначала отфильтровать по первому свойству, а затем объединить по второму фильтру:
Посмотреть рабочую скрипку с фильтром нескольких свойств
источник
ВАРИАНТ 1: Использование параметра компаратора углового фильтра
ВАРИАНТ 2: Использование отрицательного фильтра Angular.
источник
Мое решение
источник
лучший ответ:
источник