web-dev-qa-db-fra.com

Comment passer plusieurs paramètres dans la fonction de filtre angulaire, pas de filtre personnalisé

Je me suis efforcé de visiter beaucoup de questions similaires comme celle-ci, mais je n’étais toujours pas en mesure de résoudre ce problème.

Je veux passer un paramètre supplémentaire dans la fonction de filtre angulaire. J'ai trouvé la solution comme ci-dessous mais ça ne marche pas. Je deviens indéfini pour un objet que j'ai utilisé dans ng-repeat.

<li ng-repeat="user in users | filter:isStatus(user,secondParam)">{{user.name}}</li>

Il existe une solution pour le filtre personnalisé angulaire comme ci-dessous, mais cela ne fonctionne pas non plus avec la fonction de filtre angulaire.

<li ng-repeat="user in users | filter:isStatus:user:secondParam">{{user.name}}</li>

jsFiddle - Vous pouvez voir mon problème ici.

9
Jay Shukla

J'essaierai: 

$scope.isStatus = function(secondParam, thirdParam){
      return function(user) {
           console.log(secondParam);
           console.log(thirdParam);
           return user.status == $scope.status;
     }

Version mise à jour http://jsfiddle.net/4PYZa/282/

14
user2700840

Selon votre cas, vous pouvez utiliser l'expression de prédicat au lieu d'un filtre personnalisé:

<li ng-repeat="user in users | filter:{status: status, name: name}">{{user.name}}</li>

Jetez un coup d'oeil à ce violon: http://jsfiddle.net/ovym2tpr/28/

De toute façon, vous pouvez utiliser un filtre personnalisé, cela ne fonctionne tout simplement pas très bien, surtout sous ng-repeat imbriqué

4
shawnzhu

Comment appeler un filtre Angular.js avec plusieurs arguments?

AngularJS: Filtres personnalisés et ng-repeat

 myApp.filter("isStatus ", function() { // register new filter
     return function(user, secondParam, thirdParam) { // filter arguments

       return user.status == $scope.status; // implementation
    };
 });

Appel du modèle

<li ng-repeat="user in users | isStatus:secondParam">{{user.name}}</li>
0
JQuery Guru

C'est très simple, fais juste ça

<li ng-repeat="user in users | filter:user | filter : secondParam)">{{user.name}}</li>
0
Aditya Agarwal