Фильтр форматирует значение выражения для отображения пользователю. Их можно использовать во шаблонах представлений, контроллерах или сервисах, и легко определить свой собственный фильтр.
Основной API — filterProvider.
Использование фильтров в шаблонах представлений
Фильтры могут применяться к выражениям в шаблонах представлений с использованием следующего синтаксиса:
{{ expression | filter }}
Например, разметка {{ 12 | currency }} форматирует число 12 как валюту с использованием фильтра currency. Результирующее значение — $12.00.
Фильтры можно применять к результату другого фильтра. Это называется «цеплением» и использует следующий синтаксис:
{{ expression | filter1 | filter2 | ... }}
Фильтры могут иметь аргументы. Синтаксис для этого:
{{ expression | filter:argument1:argument2:... }}
Например, разметка {{ 1234 | number:2 }} форматирует число 1234 с 2 десятичными знаками с помощью фильтра number. Результирующее значение — 1,234.00.
Использование фильтров в контроллерах, сервисах и директивах
Вы также можете использовать фильтры в контроллерах, сервисах и директивах. Для этого введите зависимость с именем <filterName>Filter в свой контроллер/сервис/директиву. Например, использование зависимости numberFilter внедрит фильтр чисел. Переданный аргумент — функция, которая принимает значение для форматирования в качестве первого аргумента и параметры фильтра, начиная со второго аргумента.
В приведенном ниже примере используется фильтр с именем filter. Этот фильтр сводит массивы к подмассивам на основе условий. Фильтр можно применить в шаблоне представления с разметкой {{ctrl.array | filter:'a'}}, что выполнит поиск по всему тексту для "a". Однако использование фильтра в шаблоне представления переоценит фильтр на каждом цикле обработки, что может быть дорогостоящим, если массив большой.
Поэтому в приведенном ниже примере вызов фильтра происходит непосредственно в контроллере. Это позволяет контроллеру вызывать фильтр только при необходимости (например, когда данные загружаются из бэкэнда или меняется выражение фильтра).
Создание пользовательских фильтров
Написание собственного фильтра очень просто: просто зарегистрируйте новую функцию фабрики фильтра в своем модуле. Внутренне это использует filterProvider. Эта функция фабрики должна возвращать новую функцию фильтра, которая принимает входное значение в качестве первого аргумента. Любые аргументы фильтра передаются в качестве дополнительных аргументов функции фильтра.
Следующий пример фильтра переворачивает строку текста. Кроме того, он условно делает текст заглавными.
Тестирование пользовательских фильтров
См. учебник по phonecat для примера.
© 2010–2017 Google, Inc.
Licensed under the Creative Commons Attribution License 4.0.
https://code.angularjs.org/1.2.32/docs/guide/filter