/ / Filtruj według właściwości, nawet jeśli ona nie istnieje - angularjs, angularjs-filter

Filtruj na własność, nawet jeśli nie istnieje - angularjs, angularjs-filter

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 № 1

Chociaż 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"