首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ng-重复筛选器空值不显示

ng-重复筛选器空值不显示
EN

Stack Overflow用户
提问于 2014-09-16 22:38:43
回答 5查看 23.8K关注 0票数 6

为什么在我应用时不显示为空的角显示值:

代码语言:javascript
复制
ng-repeat="p in foo | filter: filter2"

filter2在哪里

代码语言:javascript
复制
 $scope.filter2 = function(p){
    if (p.state === null){
        return p.state;
    } else{
        return;
    }
};

下面是我要说的话:http://plnkr.co/edit/cj3v1fuBu6sHVI7A4qlq?p=preview

当过滤器不是空的时候,过滤器就能工作了,但是我只想显示空的。我可以尝试将所有空值更改为除空值以外的默认值字符串吗?是否有任何地方可以让过滤器使用空值?

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2014-09-16 22:50:52

我认为唯一的错误是你需要返回整个对象。

根据布拉德下面的评论,我去查了一下医生,他是对的。我的代码示例工作的唯一原因是它返回了一个“真实”值。

我已经修改了下面的代码示例,以考虑到这一点。

这是过滤器:

代码语言:javascript
复制
$scope.filter2 = function(p){
    if (p.state === null){
        return true;
    } else{
        return;
    }
};

以下是文档中的相关部分:

函数(实际的,预期的):函数将被赋予要比较的对象值和谓词值,如果应该将项包含在筛选结果中,则应该返回true。

普鲁克尔

票数 6
EN

Stack Overflow用户

发布于 2014-11-26 08:30:41

可以在不编写自定义筛选器的情况下过滤空项。

使用plunk中的代码,这将返回空项:

代码语言:javascript
复制
<ul ng-repeat="p in foo | filter:{state:'!'}" >
  <li>{{p.name}}</li>
</ul>

相反,这将返回所有非空项:

代码语言:javascript
复制
<ul ng-repeat="p in foo | filter:{state:'!!'}" >
  <li>{{p.name}}</li>
</ul>

双not运算符将任何值转换为布尔值:第一个not操作符!将一个真实值转换为布尔值false,第二个操作符将布尔值反转回true。在我的测试中,过滤器实际上使用的是state:'',但是为了安全起见,我会使用!! .

票数 14
EN

Stack Overflow用户

发布于 2014-09-16 23:31:09

| filter:{expression}期望的是truefalse计算,而不是对象。因此:

代码语言:javascript
复制
$scope.filter1 = function(p){
    return (p.state === 'on');
};

 $scope.filter2 = function(p){
    return (p.state === null);
};
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25879507

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档