=====Фильтры===== Фильтры позволяют провести некоторую предобработку перед выводом данных на страницу, например, отсортировать или как-то изменить набор данных.\\ \\ Общий способ использования фильтров: {{expression | filter}} ====Изменение регистра==== Используя фильтры lowercase и uppercase, мы можем приводить содержимое к нижнему и верхнему регистру соответственно. \\ Например:

{{question.text | lowercase}}

====Форматирование чисел==== Фильтр number позволяет форматировать числа. Например:
{{234.5677 | number:1}}
Результатом работы данного фильтра будет число 234.6. Числовой параметр после двоеточия указывает, сколько останется чисел после запятой (условной, так как в данном случае для разделения целой и дробной части используется точка). Если числовой параметр больше количества разрядов после запятой, то при выводе число дополняется нулями. ====Форматирование валюты==== Для форматирования валюты используется фильтр currency. \\ Например:
{{234.5 | currency}}
По умолчанию фильтр добавляет значок доллара. Но доллары USA не везде используются, поэтому мы можем изменить символ валюты:
{{234.5 | currency:'RUB'}}
====Форматирование дат==== Чтобы вывести дату в определенном формате применяется фильтр date. В качестве выражения используется количеств миллисекунд, прошедших с начала эпохи Unix (то есть с 1 января 1970 года). \\ Например:
{{1405405678756 | date:'yyyy-MM-dd'}}
Здесь на страницу будет выведена дата 2014-07-15, соответствующая шаблону yyyy-MM-dd. Данный фильтр имеет очень много шаблонов, которые можно посмотреть в документации. ====Фильтры orderBy и limitTo==== Фильтр orderBy упорядочивает набор объектов по определенному свойству. Так, возьмем проект, созданный в прошлом разделе. Изменим строки, где происходит вывод объектов следующим образом:
Здесь у нас применяется фильтр orderBy, который использует параметр sortparam. Добавим определение этого параметра в ранее созданный контроллер QuestionController: var myApp=angular.module('myApp'); myApp.controller('QuestionController', function($scope) { $scope.sortparam='rate'; $scope.question={ text: 'Какой js-фреймворк лучше использовать?', author: 'Иван Иванов', date: '20/10/2013', answers:[{ text: 'AngularJS!', author: 'Вова Сидоров', date: '20/10/2013', rate:2 },{ text: 'AngularJS лучше всех', author: 'Олег Кузнецов', date: '20/10/2013', rate:0 },{ text: 'Я бы использовал knockout', author: 'Неизвестный', date: '21/10/2013', rate:0 }] }; $scope.voteUp = function (answer){ answer.rate++; }; $scope.voteDown = function (answer){ answer.rate--; }; }); Строка $scope.sortparam='rate'; указывает, что все объекты будут отсортированы при выводе по значению свойства rate в порядке возрастания. Если же нам надо поместить сначала те объекты, у которых свойство rate больше, то делаем обратный порядок: $scope.sortparam='-rate';\\ Теперь применим фильтр limitTo, который ограничивает вывод определенным количеством объектов:
{{ :angular:angularjs:filters:9.png?400 |}} ====Фильтр filter==== Фильтр filter задает параметры и значения фильтрации. Посмотрим на примере. Возьмем проект, сделанный выше, и добавим в него привязку двух выпадающих списков с применением фильтра filter:
Здесь первый элемент select привязывается к модели answer.author через ng-model. Второй же осуществляет фильтрацию по выбранной модели. При выборе автора ответа в первом списке во втором автоматически будут отображаться даты всех его ответов. Вывод в элемент select можно заменить выводом в div, ul или другой элемент.\\ {{ :angular:angularjs:filters:10.png?400 |}} Рассмотрим еще пример с фильтром. Допустим, нам надо через специальное поле ввода динамически получать всех ответчиков, которые соответствуют определенному критерию:\\

{{question.text}}

{{question.author}}

{{question.date}}

Введите ответчика:

Ответы

{{a.rate}}
{{a.text}}

{{a.author}}

{{a.date}}

{{ :angular:angularjs:filters:filters.png?400 |}} Тут все просто: текстовое поле осуществляет привязку к объекту member: ng-model="member". Даже если в контроллере мы не установили этот объект, AngularJS создает его автоматически. А при выводе устанавливаем фильтр по этому объекту:
. Причем данный объект учитывается только для свойства author.