И $ фильтр на объекте - PullRequest
0 голосов
/ 02 июля 2019

У меня есть объект с различными свойствами, и мне было интересно, как отфильтровать их по нескольким фильтрам, не создавая новый пользовательский фильтр, например, у меня есть объект "Люди", содержащий город и язык, на самом деле я могу отсортироватьтолько по городу или языку, но не по обеим этим строчкам:

<md-input-container>
    <label>
      Search for user...
    </label>
    <input ng-model="searchTerm" type="search" class="demo-header-searchbox md-text" flex>
</md-input-container>

<md-option ng-value="user" ng-repeat="user in users | filter:searchTerm ">
    {{user.city}} {{user.language}}
</md-option>

Как избежать создания нового фильтра cutom, пожалуйста?

1 Ответ

1 голос
/ 02 июля 2019

Чтобы создать filter более чем одним свойством объекта, вы можете использовать filter framework filter.

В привязке шаблона HTML {{filter_expression |фильтр: выражение: компаратор: anyPropertyKey}}.Где expression может быть string, Object или function.

Согласно официальной документации

Объект: Объект шаблона может использоваться для фильтрации определенных свойств объектов, содержащихся в массиве.Например, предикат {name: "M", phone: "1"} вернет массив элементов с именем свойства, содержащим "M", и свойством phone, содержащим "1".Специальное имя свойства (по умолчанию $) можно использовать (например, как в {$: "text"}), чтобы принять совпадение с любым свойством объекта или его вложенными объектными свойствами.

дляСоздайте фильтр по свойствам City и Language, просто используйте:

<md-option 
    ng-value="user"
    ng-repeat="user in users | filter: {City:searchTerm, Language: searchTerm }">

  {{user.city}} {{user.language}}
</md-option>

, также вы можете использовать параметр function для решения вашей проблемы

function (значение, индекс, массив): Функция предиката может использоваться для записи произвольных фильтров.Функция вызывается для каждого элемента массива, с элементом, его индексом и самим массивом в качестве аргументов.

Окончательный результат - это массив тех элементов, для которых предикат вернул true.

просто напишите функцию, в которой значение фильтра основано на вашем поисковом запросе

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...