Gar*_*uuk 5 null filter angularjs ng-repeat
当我申请时,为什么角度显示值不为null:
ng-repeat="p in foo | filter: filter2"
Run Code Online (Sandbox Code Playgroud)
filter2是哪里的
$scope.filter2 = function(p){
if (p.state === null){
return p.state;
} else{
return;
}
};
Run Code Online (Sandbox Code Playgroud)
这是我正在说的话:http ://plnkr.co/edit/cj3v1fuBu6sHVI7A4qlq?p=preview
当过滤器除了null之外的任何东西时,过滤器都可以工作,但我只想尝试显示空值.我可以尝试将所有空值更改为除null之外的默认值字符串?是否有任何地方可以让过滤器使用空值?
Nik*_*man 14
您可以在不编写自定义过滤器的情况下过滤空项.
使用plunk中的代码,这将返回null项:
<ul ng-repeat="p in foo | filter:{state:'!'}" >
<li>{{p.name}}</li>
</ul>
Run Code Online (Sandbox Code Playgroud)
相反,这将返回所有非null项:
<ul ng-repeat="p in foo | filter:{state:'!!'}" >
<li>{{p.name}}</li>
</ul>
Run Code Online (Sandbox Code Playgroud)
double not运算符将任何值转换为boolean:第一个not运算符!将truthy值转换为boolean值false,第二个运算符将boolean值反转为boolean值true.在我的测试中,过滤器实际上只是通过使用,state:''但我会!!只是为了安全起见......
我认为唯一不对的是你需要返回整个对象.
根据布拉德在下面的评论,我去检查文档,他是对的.我的代码示例工作的唯一原因是因为它返回了'truthy'值.
我已经修改了下面的代码示例,将其考虑在内.
这是过滤器:
$scope.filter2 = function(p){
if (p.state === null){
return true;
} else{
return;
}
};
Run Code Online (Sandbox Code Playgroud)
以下是文档中的相关部分:
function(actual,expected):该函数将被赋予对象值和要比较的谓词值,如果该项应包含在过滤结果中,则应返回true.
| filter:{expression}期待一个true或false评估,而不是一个对象.因此:
$scope.filter1 = function(p){
return (p.state === 'on');
};
$scope.filter2 = function(p){
return (p.state === null);
};
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
20678 次 |
| 最近记录: |