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