J’essaie de filtrer certains éléments de liste en fonction de la valeur d’une propriété booléenne, mais peu importe ce que je fais, la liste entière est toujours affichée. Certaines des choses que j’ai essayées ont été tellement brisées que rien ne s’affiche, mais ce n’est ni ici ni là. Je ne peux pas faire fonctionner mon filtrage comme je le souhaite:
$scope.attendees = [ {"firstname":"Steve", "lastname":"Jobs", "arrived":true, "id":1} ,{"firstname":"Michelle", "lastname":"Jobs", "arrived":false, "id":2} ,{"firstname":"Adam", "lastname":"Smith", "arrived":true, "id":3} ,{"firstname":"Megan", "lastname":"Smith", "arrived":false, "id":4} ,{"firstname":"Dylan", "lastname":"Smith", "arrived":false, "id":5} ,{"firstname":"Ethan", "lastname":"Smith", "arrived":false, "id":6} ];
Utilisation du filtrage ng-repeat suivant:
- {{person.lastname}}, {{person.firstname}}
J’ai l’impression d’avoir essayé toutes les permutations que je peux trouver référencées, dont la plupart provenaient de différents résultats de recherche StackOverflow:
filter:'arrived'
filter:arrived
filter:'person.arrived'
filter:person.arrived
filter:{arrived:true}
filter:{arrived:'true'}
filter:{person.arrived:true}
filter:{person.arrived:'true'}
J’ai aussi essayé de créer une fonction de filtre personnalisée:
$scope.isArrived = function(item) { return item.arrived; };
Et en l’appliquant ainsi:
filter:isArrived
filter:'isArrived'
filter:{isArrived(person)}
filter:isArrived(person)
filter:'isArrived(person)'
Aucun de ceux-ci ne semble fonctionner. Qu’est-ce que je rate?
Voici un plnkr qui démontre mon problème .
La piste doit être à la fin de l’expression:
La réponse de @Gruff est juste, mais juste pour donner une réponse d’une source officielle:
À partir des documents angulars
ng-repeat
:Note:
track by
doit toujours être la dernière expression :
{{model.name}}
Il apparaît également sur la partie “Arguments” des documents:
Notez que l’expression de suivi doit venir en dernier, après tous les filtres et l’expression de l’alias.