Я написал функцию фильтра, которая будет возвращать данные на основе аргумента, который вы передаете. Я хочу такую же функциональность в моем контроллере. Можно ли повторно использовать функцию фильтра в контроллере?
Это то, что я пробовал до сих пор:
function myCtrl($scope,filter1)
{
// i simply used the filter function name, it is not working.
}
Ответы:
Введите $ фильтр на ваш контроллер
Тогда везде, где вы хотите использовать этот фильтр, просто используйте его так:
Если вы хотите передать аргументы этому фильтру, сделайте это, используя отдельные скобки:
Где
arg1
находится массив, по которому вы хотите фильтровать, иarg2
объект, используемый для фильтрации.источник
var anyNumber = $filter('number')(12.222222, 2);
получить12.22
.$filter("currency")(price, "$", 2)
так что если бы у вас была цена = 200, то это выражение вернуло бы «200,00 $».$filter('filtter1')
(2 т). Однако, если вы введетеfiltter1Filter
Angular, вы сразу же пожалуетесь, что зависимость не существует.Ответ, предоставленный @Prashanth, является правильным, но есть еще более простой способ сделать то же самое. По сути, вместо внедрения
$filter
зависимости и использования неудобного синтаксиса вызова it ($filter('filtername')(arg1,arg2);
) можно ввести зависимость: имя фильтра плюсFilter
суффикс.Взяв пример из вопроса, можно написать:
Следует отметить, что вы должны добавить
Filter
к имени фильтра, независимо от того, какое соглашение об именах вы используете: на foo ссылается вызовfooFilter
fooFilter, на который ссылается вызов
fooFilterFilter
источник
Используя следующий пример кода, мы можем фильтровать массив в угловом контроллере по имени. это основано на следующем описании. http://docs.angularjs.org/guide/filter
this.filteredArray = filterFilter (this.array, {name: 'Igor'});
JS:
HTML
источник
Вот еще один пример использования
filter
в контроллере Angular:Просто, эй?
источник
Есть три возможных способа сделать это.
Предположим, у вас есть следующий простой фильтр, который преобразует строку в верхний регистр, с параметром только для первого символа.
Прямо через
$filter
Примечание: это дает вам доступ ко всем вашим фильтрам.
Присвоить
$filter
к аvariable
Эта опция позволяет вам использовать
$filter
какfunction
.Загрузить только определенный
Filter
Вы можете загрузить только определенный фильтр, добавив имя фильтра с помощью
Filter
.Какой из них вы используете, зависит от личных предпочтений, но я рекомендую использовать третий, потому что это наиболее читаемый вариант.
источник
источник
У меня есть еще один пример, который я сделал для своего процесса:
Я получаю массив со значением-описание, как это
в моем Filters.js:
Затем тестовый var (контроллер):
источник
AngularJs позволяет использовать фильтры внутри шаблона или внутри контроллера, директивы и т. Д.
в шаблоне вы можете использовать этот синтаксис
и внутри контроллера вы можете использовать внедрение службы $ filter
Если вам нужно больше с примером Демо здесь ссылка
AngularJs примеры фильтров и демо
источник
Есть еще один способ оценки фильтров, который отражает синтаксис из представлений. Это волосатый вызов, но вы можете создать для него ярлык. Мне нравится, что синтаксис строки идентичен тому, что вы имели бы в представлении. Выглядит так:
источник
Кажется, никто не упомянул, что вы можете использовать функцию как arg2 в $ filter ('filtername') (arg1, arg2);
Например:
источник
Простой пример даты с использованием $ filter в контроллере:
Как объяснено здесь - https://stackoverflow.com/a/20131782/262140
источник
Используйте код ниже, если мы хотим добавить несколько условий вместо одного значения в угловом фильтре javascript:
источник
Прежде всего, вставьте $ filter в ваш контроллер, убедившись, что ngSanitize загружен в ваше приложение, а позже при использовании контроллера вы увидите следующее:
Всегда проверяйте документы angularjs
источник
если вы хотите отфильтровать объект в контроллере попробуйте это
Это вернет отфильтрованный объект в соответствии с условием if
источник
Повторное использование фильтра Angular.js - представление / контроллер
Это решение охватывает повторное использование угловых фильтров. Это еще один способ фильтрации данных, и Google высадил меня здесь, когда мне это было нужно; и я хотел бы поделиться.
Случай использования
Если вы уже выполняете фильтрацию, скажем, в виде ng-repeat (как показано ниже), тогда вы могли бы определить фильтр в контроллере следующим образом. И тогда вы можете использовать повторно, как в последних примерах.
Пример использования фильтра - отфильтрованный повтор в представлении
Пример определения углового фильтра
Итак, концепция здесь в том, что вы уже используете фильтр, созданный для вашего представления, а затем понимаете, что хотели бы использовать его и в своем контроллере.
Использование функции фильтра в контроллере Пример 1
Использование функции фильтра в контроллере Пример 2
Показывать кнопку только в том случае, если дубликаты не найдены, используя предыдущий фильтр.
Кнопка HTML
Показать / Скрыть кнопку
Некоторые могут найти эту версию фильтрации легкой, и это опция Angular.js.
Необязательный параметр компаратора «true», используемый в представлении и в вызове функции $ filter, указывает на необходимость строгого сравнения. Если вы пропустите, можно искать значения по нескольким столбцам.
https://docs.angularjs.org/api/ng/filter/filter
источник