我希望这将是非常简单的角度.
我有一个与翻译和其他用户的列表
[{user: 'a',languages:['french','english','spanish']},{user: 'b'}]
ng-repeat="translator in users | filter: {languages}"
但不幸的是,我似乎无法弄清楚如何通过属性的存在进行过滤.
我已经尝试了各种各样的方式
{languages:'!undefined'} {languages.length > 0} {languages.length:'!0'}
我不想为此写一个外部过滤器,因为我确定这是有可能的,我只是不能得到的权利.
<div ng-repeat="translator in users | filter : { languages : '!!' }">
说明:
考虑下列列表:
$scope.items = [ { propertyOne: 'a',propertyTwo: 'hello' },{ propertyOne: 'b',propertyTwo: null },{ propertyOne: 'c',propertyTwo: undefined },{ propertyOne: 'd' } ];
“!”过滤具有某个属性的对象或具有不定义的某个属性的对象或null:
<div ng-repeat="item in items | filter : { propertyTwo : '!!' }"> {{item.propertyOne}} </div> <!-- outputs: a -->
‘!’过滤不具有某些特定属性或未定义属性的某些属性的对象或null:
<div ng-repeat="item in items | filter : { propertyTwo : '!' }"> {{item.propertyOne}} </div> <!-- outputs: b c d -->
注意:对于值为0,false或空字符串(”)的属性,它不起作用.
编辑:以前的答案与plunkr的例子不同.我通过交换’!!’来修复它们和’!’.