过滤 属性 即使它不存在

Filter on property even if it doesn't exist

在 angular 1.2 中我有一个对象数组:

[{
  name: 'bob'
},{
  name: 'jack',
  archived: false
},{
  name: 'ted',
  archived: true
}]

然后我将 ng-repeat 一组人并尝试过滤掉 archived = true 的任何对象

<div ng-repeat="person in people | filter: {archived: '!' }">

这在 angular 1.2

中非常有效

但是当我升级到 angular 1.3 时它停止工作。

我知道我可以简单地编写自己的过滤函数,但是是否有正确的方法来过滤布尔值 属性 等于 true 的地方,其中 属性 可能不存在于所有对象中。

如果 属性 不存在,则不应过滤。上述示例数组中的 IE 仅应过滤掉 ted。

UPD:更新了正确的代码。

我会为此创建一个辅助函数:

$scope.notArchived = function(el) {
    return !el.archived;
};

HTML:

ng-repeat="person in people | filter: notArchived"

虽然这似乎适用于 1.3 之前的版本:

<div ng-repeat="person in people | filter: {archived: '!' }">

这在 angular 1.3

中非常有效
<div ng-repeat="person in people | filter: {archived: '!true' }">