2015-02-07 27 views
2

在1.2角是我有对象的数组:过滤器,即使不存在

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

那我就NG-重复的人在阵列上,并尝试过滤掉任何对象,其中存档=真

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

这角1.2

伟大的工作。然而它停止工作,当我升级到1.3角。

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

如果该属性不存在,则不应过滤。仅在特德上面的示例数组中的IE应该被滤除。

+0

嗯..为什么不简单地使用'filter:{archived:true}'? – dfsq 2015-02-07 14:12:03

+0

对不起,如果我混淆的东西,我想过滤OUT存档==真正的。含义我希望数组中的所有对象都存在,如果它们已归档== false或根本没有归档属性。 – lostintranslation 2015-02-25 13:16:34

回答

4

虽然这似乎预先1.3工作:

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

这个工程很大的角度1.3

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

优雅的解决方案,做得很好 – Manube 2015-02-25 15:33:59

1

UPD:用正确的代码更新。

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

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

HTML:

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

错误的方向,请参阅其他意见。 – lostintranslation 2015-02-25 13:18:43

+0

我明白了,我会为此创建一个辅助函数。但我看到你发现更简洁的方式。 – dfsq 2015-02-25 13:24:14

相关问题