W wersji kątowej 1.2 miałem szereg obiektów:
[{
name: "bob"
},{
name: "jack",
archived: false
},{
name: "ted",
archived: true
}]
Następnie powtórzyłbym powtórzenie nad grupą ludzi i spróbowałem odfiltrować dowolny obiekt, w którym zarchiwizowane = prawda
<div ng-repeat="person in people | filter: {archived: "!" }">
Działa to doskonale w kątach 1.2
Jednak przestaje działać po aktualizacji do kątowej 1.3.
Wiem, że mogę po prostu napisać własną funkcję filtrowania, ale czy istnieje prawidłowy sposób filtrowania, w którym właściwość boolowska jest równa prawdzie, a właściwość ta może nie istnieć we wszystkich obiektach.
Jeśli właściwość nie istnieje, nie należy jej filtrować. IE w powyższej tablicy przykładowej należy odfiltrować tylko ted.
Odpowiedzi:
4 dla odpowiedzi № 1Chociaż wydawało się, że działa to w wersji wcześniejszej niż 1.3:
<div ng-repeat="person in people | filter: {archived: "!" }">
Działa to doskonale w kątach 1.3
<div ng-repeat="person in people | filter: {archived: "!true" }">
1 dla odpowiedzi nr 2
UPD: Zaktualizowano z poprawnym kodem.
W tym celu utworzę funkcję pomocnika:
$scope.notArchived = function(el) {
return !el.archived;
};
HTML:
ng-repeat="person in people | filter: notArchived"