Взгляните на пример здесь: http://docs.angularjs.org/api/ng.filter:filter
Вы можете выполнять поиск по любому из свойств телефона, используя, <input ng-model="search">
и вы можете искать только по имени, используя <input ng-model="search.name">
, и результаты соответствующим образом фильтруются по имени (ввод номера телефона не возвращает никаких результатов, как ожидалось).
Скажем , у меня есть модель со свойством «имя», свойство «телефон», и «секретно» собственности, как бы я идти о фильтрации по как «имя» и «телефон» свойства и не «секрет» собственности ? По сути, пользователь может ввести имя или номер телефона, и ng-repeat
фильтр будет правильно отфильтрован, но даже если пользователь ввел значение, равное части «секретного» значения, он ничего не вернет.
Спасибо.
ng-model
(указаниеsearch.name
в поле INPUTng-model
) приведет к тому, что объекты, которые будут повторяться, будут отфильтрованы по ихname
свойству? То есть интуитивно для меня вы должны иметь возможность конкретно фильтровать, простоname
указав в своемng-repeat
фильтре:,filter: friend.name
вместо `написания` <input ng-model = "search.name"> ...Ответы:
Вот плункер
Новый плункер с более чистым кодом и элементами списка поиска и запроса без учета регистра
Основная идея - создать функцию фильтра для достижения этой цели.
Из официального документа
Обновить
Некоторых людей может беспокоить производительность в реальном мире, и это правильно.
В реальном мире мы, вероятно, сделаем подобный фильтр из контроллера.
Вот подробный пост, показывающий, как это сделать.
Короче говоря, мы добавляем
ng-change
во ввод для отслеживания новых изменений поискаа затем запустить функцию фильтра.
источник
item.brand.indexOf($scope.query)!=-1 || item.model.indexOf($scope.query)!=-1)
Вы можете передать объект в качестве параметра в выражение фильтра, как описано в Справочнике по API . Этот объект может выборочно применять интересующие вас свойства, например:
Вот плункер
Внимание ... этот пример отлично работает с AngularJS 1.1.5, но не всегда так хорошо с 1.0.7. В этом примере 1.0.7 инициализируется со всем отфильтрованным, а затем работает, когда вы начинаете использовать входы. Он ведет себя так, как будто входы содержат несовпадающие значения, даже если они начинаются пустыми. Если вы хотите оставаться на стабильных выпусках, попробуйте это в своей ситуации, но в некоторых сценариях может потребоваться использовать решение @ maxisam до выпуска 1.2.0.
источник
Я вдохновился ответом @ maxisam и создал свою собственную функцию сортировки, и я бы хотел поделиться ею (потому что мне скучно).
Ситуацию я хочу отфильтровать по массиву автомобилей. Выбранные свойства для фильтрации - это имя, год, цена и км. Цена собственности и км - это числа (отсюда и использование
.toString
). Я также хочу контролировать прописные буквы (следовательно.toLowerCase
). Также я хочу иметь возможность разбить свой запрос фильтра на разные слова (например, учитывая фильтр 2006 Acura, он находит совпадения 2006 с годом и Acura с именем).Функция я передаю фильтру
источник
Если вы готовы использовать сторонние библиотеки, вам могут пригодиться Angular Filters с хорошей коллекцией фильтров:
https://github.com/a8m/angular-filter#filterby
источник
Надеюсь, этот ответ поможет, фильтр с несколькими значениями
И рабочий пример на этой скрипке
источник
Здесь есть несколько хороших решений, но я бы предложил пойти другим путем. Если поиск - это самая важная вещь, а свойство secret вообще не используется в представлении; Мой подход к этому заключался бы в использовании встроенного углового фильтра со всеми его преимуществами и простом сопоставлении модели с новым массивом объектов.
Пример из вопроса:
Теперь в html просто используйте обычный фильтр для поиска обоих этих свойств.
источник
Довольно простой подход с использованием filterBy в angularJs
Для работы plnkr перейдите по этой ссылке
http://plnkr.co/edit/US6xE4h0gD5CEYV0aMDf?p=preview
Это специально использовало одно свойство для поиска по нескольким столбцам, но не по всем.
контролер
источник
Я решил это просто:
источник
http://plnkr.co/edit/A2IG03FLYnEYMpZ5RxEm?p=preview
Вот поиск с учетом регистра, который также разделяет ваш поиск на слова для поиска в каждой модели. Только когда он найдет пробел, он попытается разбить запрос на массив, а затем искать каждое слово.
Он возвращает истину, если каждое слово есть хотя бы в одной из моделей.
источник
Фильтр может быть объектом JavaScript с полями, и вы можете иметь выражение как:
источник
Мне нравится, когда это возможно, просто. Мне нужно было сгруппировать по международному, отфильтровать по всем столбцам, отобразить количество для каждой группы и скрыть группу, если никаких элементов не существует.
Кроме того, я не хотел добавлять собственный фильтр только для таких простых вещей.
источник
Я мог бы очень поздно, но это то, чем я закончил. Я сделал очень общий фильтр.
Тогда используйте это так
Ваше окно поиска похоже
где name и device_id - это свойства в dvs
источник
Вот простое решение для тех, кому нужен быстрый фильтр по объекту:
Фильтр массива позволяет имитировать объект, который вы пытаетесь фильтровать. В приведенном выше случае следующие классы будут работать нормально:
И где может выглядеть колода:
А если вы хотите отфильтровать несколько свойств объекта, просто разделите имена полей запятой:
РЕДАКТИРОВАТЬ: Вот рабочий plnkr, который предоставляет пример одного и нескольких фильтров свойств:
http://embed.plnkr.co/i0wCx6l1WPYljk57SXzV/
источник
ng-repeat
. Однако ваш пример кажется немного сложным: есть ли способ его свести к минимуму? Я знаю, что вопрос, по сути, заключается в поиске одного поля поиска, которое может фильтровать только выбранные свойства. В вашем примере похоже, что мы фильтруем либо номиналы, либо числа, но не то и другое одновременно. Если я неправильно понимаю ваш пример, дайте мне знать!