=====Cоздание собственных фильтров===== Возможно, кому-то набор встроенных фильтров покажется ограниченным. Но разработчики фреймворка предоставляют нам возможность создавать собственные фильтры. ====Определение фильтра==== Фильтр по сути представляет функцию, которая выполняется над переданным значением. Ее типизированное представление выглядит следующим образом: module.filter('filter_name', function(){ return function(param){ // некоторые действия над param return some_value; } }) В этой конструкции module - название модуля приложения. filter_name - произвольное название функции фильтра. Параметр возвращаемой функции - param - параметр, над которым будут производиться действия. И some_value - некоторое возвращаемое значение. В качестве значения может выступать текст самого параметра или какое-то иное значение. Посмотрим на примере.\\ \\ Для начала создадим модуль в отдельном файле - назовем его **app.js** и положим в папку **js**: var questApp = angular.module('questApp', []); Затем изменим контроллер QuestionController: questApp.controller('QuestionController', function QuestionController($scope){ $scope.question={ text: 'Какой js-фреймворк лучше использовать?', author: 'Иван Иванов', date: '20/10/2013', answers: [{ text: 'AngularJS!', author: 'Вова Сидоров', date: '20/10/2013', rate:2 },{ text: 'AngularJS лучше всех', author: 'Олег Кузнецов', date: '21/10/2013', rate:3 },{ text: 'фигасе квестшен', author: 'Неизвестный', date: '22/10/2013', rate:0 }] }, $scope.voteUp = function (answer){ answer.rate++; }; $scope.voteDown = function (answer){ answer.rate--; }; } ) Теперь создадим фильтр. Его задачей будет фильтрация сообщений, и если сообщение содержит некорректное выражение, то его заменяем звездочками. Для этого создадим отдельный файл **filter.js** в каталоге **js** со следующим содержанием: questApp.filter('formatText', function(){ return function(text){ if(text.indexOf("фигасе")!==-1){ return "***"; } else{ return text; } } }) В итоге проект будет выглядеть следующим образом:\\ {{ :angular:angularjs:filters:19.png?200 |}} И теперь определим html-страницу, где будет происходить все это безобразие:

{{question.text}}

{{question.author}}

{{question.date}}

Ответы

{{answer.rate}}
{{answer.text | formatText}}

{{answer.author}}

{{answer.date}}

И поскольку один из ответов к вопросу содержит некорректное слово, то при выводе оно будет заменяться звездочками:\\ {{ :angular:angularjs:filters:12.png?400 |}}