Eu estou tentando filtrar alguns itens da lista com base no valor de uma propriedade booleana, mas não importa o que eu faço a lista inteira é sempre exibida. Algumas das coisas que eu tentei foram tão quebradas que nada aparece, mas não está nem aqui nem ali. Não consigo fazer minha filtragem funcionar conforme desejado:
$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} ];
Usando o seguinte filtro ng-repeat:
- {{person.lastname}}, {{person.firstname}}
Eu sinto que tentei todas as permutações que eu posso encontrar referenciadas, a maioria das quais veio de vários resultados de pesquisa do 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'}
Eu também tentei criar uma function de filtro personalizada:
$scope.isArrived = function(item) { return item.arrived; };
E aplicando-o assim:
filter:isArrived
filter:'isArrived'
filter:{isArrived(person)}
filter:isArrived(person)
filter:'isArrived(person)'
Nada disso parece funcionar. o que estou perdendo?
Aqui está um plnkr que demonstra o meu problema .
A faixa precisa estar no final da expressão:
@ Resposta Gruff está certo, mas apenas para dar uma resposta de uma fonte oficial:
Do Angular
ng-repeat
docs :Nota:
track by
deve ser sempre a última expressão :
{{model.name}}
Ele também aparece na parte “Argumentos” dos documentos:
Observe que a expressão de rastreamento deve ser a última, depois de qualquer filtro, e a expressão de alias.