En fait, il existe une autre solution (peut-être meilleure) où vous pouvez utiliser le filtre natif de `` filtre '' angulaire et toujours transmettre des arguments à votre filtre personnalisé.
Considérez le code suivant:
<div ng-repeat="group in groups">
<li ng-repeat="friend in friends | filter:weDontLike(group.enemy.name)">
<span>{{friend.name}}</span>
<li>
</div>
Pour que cela fonctionne, définissez simplement votre filtre comme suit:
$scope.weDontLike = function(name) {
return function(friend) {
return friend.name != name;
}
}
Comme vous pouvez le voir ici, weDontLike renvoie en fait une autre fonction qui a votre paramètre dans sa portée ainsi que l'élément d'origine provenant du filtre.
Il m'a fallu 2 jours pour réaliser que vous pouvez le faire, je n'ai encore vu cette solution nulle part.
Checkout Inverser la polarité d'un filtre angular.js pour voir comment vous pouvez l'utiliser pour d'autres opérations utiles avec le filtre.
D'après ce que je comprends, vous ne pouvez pas passer d'arguments à une fonction de filtre (lorsque vous utilisez le filtre «filtre»). Ce que vous auriez à faire est d'écrire un filtre personnalisé, qc comme ceci:
Voici le jsFiddle fonctionnel: http://jsfiddle.net/pkozlowski_opensource/myr4a/1/
L'autre alternative simple, sans écrire de filtres personnalisés, consiste à stocker un nom à filtrer dans une portée, puis à écrire:
la source
En fait, vous pouvez passer un paramètre ( http://docs.angularjs.org/api/ng.filter:filter ) et vous n'avez pas besoin d'une fonction personnalisée juste pour cela. Si vous réécrivez votre HTML comme ci-dessous, cela fonctionnera:
http://jsfiddle.net/ZfGx4/59/
la source
filter:['Adam', 'john']
Vous pouvez simplement faire comme ceci dans le modèle
Dans le filtre
la source
En étendant la réponse de pkozlowski.opensource et en utilisant la
array's
méthode de filtre intégré javascript , une solution précieuse pourrait être la suivante:Voici le lien jsfiddle .
Plus d'informations sur le filtre Array ici .
la source
Vous pouvez passer plusieurs arguments au filtre angulaire!
Définition de mon application angulaire et d'une variable au niveau de l'application -
Votre filtre sera comme: -
Et à partir du HTML, vous enverrez des données telles que: -
Ici, j'envoie un objet JSON au filtre. Vous pouvez également envoyer tout type de données comme une chaîne ou un nombre.
vous pouvez également passer un nombre dynamique d'arguments à filtrer, dans ce cas, vous devez utiliser des arguments pour obtenir ces arguments.
Pour une démonstration fonctionnelle, allez ici - en passant plusieurs arguments au filtre angulaire
la source
Vous pouvez simplement utiliser
| filter:yourFunction:arg
Et en js
la source