即使它不存在,也要对属性进行过滤

时间:2015-02-07 14:07:49

标签: angularjs angularjs-filter

在角度1.2中,我有一个对象数组:

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

然后我会重复一遍,并尝试过滤掉archived = true的任何对象

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

这在角度1.2中非常有效。

然而,当我升级到角度1.3时它停止工作。

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

如果该属性不存在,则不应对其进行过滤。上面的示例数组中的IE只能过滤掉。

2 个答案:

答案 0 :(得分:6)

虽然这似乎在1.3之前有效:

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

这在角度1.3中很有效。

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

答案 1 :(得分:1)

UPD :使用正确的代码进行了更新。

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

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

HTML:

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