Próbuję filtrować niektóre elementy listy na podstawie wartości właściwości logicznej, ale bez względu na to, co zrobię, cała lista jest zawsze wyświetlana. Kilka rzeczy, których próbowałem, zostało tak zepsutych, że nic się nie wyświetla, ale to nie jest ani tu, ani tam. Nie mogę sprawić, by moje filtrowanie działało zgodnie z oczekiwaniami:
$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}
];
Stosując następujące filtrowanie powtórzeń ng:
<ul>
<li ng-repeat="person in attendees track by person.id | filter:arrived:'false'">
{{person.lastname}}, {{person.firstname}}
</li>
</ul>
Wydaje mi się, że wypróbowałem każdą permutację, do której mogę znaleźć odniesienie, z których większość pochodzi z różnych wyników wyszukiwania 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'}
Próbowałem również utworzyć niestandardową funkcję filtru:
$scope.isArrived = function(item) {
return item.arrived;
};
I stosując go w ten sposób:
filter:isArrived
filter:'isArrived'
filter:{isArrived(person)}
filter:isArrived(person)
filter:'isArrived(person)'
Żadne z nich nie wydaje się działać. czego mi brakuje?
angularjs
angularjs-ng-repeat
Adam Tuttle
źródło
źródło
trackBy: ..
i działał normalnie "jak wszystko inne".@ Gruff odpowiedź jest poprawna, ale wystarczy podać odpowiedź z oficjalnego źródła:
Pojawia się również w części „Argumenty” dokumentów:
źródło