Можно ли передать аргумент функции фильтра, чтобы можно было фильтровать по любому имени?
Что-то вроде
$scope.weDontLike = function(item, name) {
console.log(arguments);
return item.name != name;
};
источник
Можно ли передать аргумент функции фильтра, чтобы можно было фильтровать по любому имени?
Что-то вроде
$scope.weDontLike = function(item, name) {
console.log(arguments);
return item.name != name;
};
На самом деле есть другое (может быть, лучшее решение), где вы можете использовать собственный фильтр angular 'filter' и по-прежнему передавать аргументы своему настраиваемому фильтру.
Рассмотрим следующий код:
<div ng-repeat="group in groups">
<li ng-repeat="friend in friends | filter:weDontLike(group.enemy.name)">
<span>{{friend.name}}</span>
<li>
</div>
Чтобы это работало, вы просто определяете свой фильтр следующим образом:
$scope.weDontLike = function(name) {
return function(friend) {
return friend.name != name;
}
}
Как вы можете видеть здесь, weDontLike фактически возвращает другую функцию, в области действия которой есть ваш параметр, а также исходный элемент, поступающий из фильтра.
Мне потребовалось 2 дня, чтобы понять, что вы можете это сделать, я еще нигде не видел этого решения.
Checkout обратной полярности из angular.js фильтра , чтобы увидеть , как вы можете использовать это для других полезных операций с фильтром.
Насколько я понимаю, вы не можете передавать аргументы функции фильтра (при использовании фильтра «фильтр»). Что вам нужно сделать, так это написать собственный фильтр, например:
Вот рабочий jsFiddle: http://jsfiddle.net/pkozlowski_opensource/myr4a/1/
Другой простой альтернативой без написания пользовательских фильтров является сохранение имени для фильтрации в области видимости, а затем запись:
источник
На самом деле вы можете передать параметр ( http://docs.angularjs.org/api/ng.filter:filter ) и не нуждаетесь в специальной функции только для этого. Если вы перепишете свой HTML, как показано ниже, он будет работать:
http://jsfiddle.net/ZfGx4/59/
источник
filter:['Adam', 'john']
Вы можете просто сделать это в шаблоне
В фильтре
источник
Расширение ответа pkozlowski.opensource и использование
array's
встроенного метода фильтрации javascript может быть следующим:Вот ссылка на jsfiddle .
Подробнее о фильтре массива здесь .
источник
Вы можете передать несколько аргументов угловому фильтру!
Определение моего приложения angular и переменной уровня приложения -
Ваш фильтр будет выглядеть так: -
А из HTML вы отправите такие данные, как: -
Здесь я отправляю в фильтр объект JSON. Вы также можете отправлять любые данные, такие как строка или число.
также вы можете передать динамическое количество аргументов для фильтрации, в этом случае вам нужно использовать аргументы для получения этих аргументов.
Для рабочей демонстрации перейдите сюда - передача нескольких аргументов в фильтр angular
источник
Вы можете просто использовать
| filter:yourFunction:arg
И в js
источник