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.
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/
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é
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>
C'est très simple, fais juste ça
<li ng-repeat="user in users | filter:user | filter : secondParam)">{{user.name}}</li>