微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

angularjs – 使有角滤波器有条件

我目前正在使用文本输入过滤项目列表。我想让它这样当一个特定的变量设置,列表不进行过滤,无论是什么文本输入。任何建议,如何我可以完成这个?
<a ng-repeat="set in data | filter: { value: search }" data-id="{{set.id}}" ng-mousedown="setBox(set)" ng-mouSEOver="setSelected(set,$event)" ng-bind-html="set.value | trustHTML"></a>
如果将过滤器表达式设置为“(或未定义)”,则可以实现此操作 – 这将导致不应用过滤器(对于disableFilter设置),否则设置为实际的过滤器表达式。

所以,假设,这个切换变量 – disableFilter – 是一个布尔:

<a ng-repeat="set in data | filter: (!disableFilter || '') && filterExpression">

(filterExpression是你想要过滤的表达式)。您的具体情况是:

<a ng-repeat="set in data | filter: (!disableFilter || '') && {value: search}">

编辑:

解释上面的工作原理。

>记住||和&&返回其操作数之一的值。
> ||和&&使用短路评估 – 真|| (anything)返回true;假& (anything)返回false – 不评估(任何)表达式。
>”是falsy(或者使用undefined,如果它更清晰)

所以,

disableFilter === true,!disableFilter === false,因此第二个操作数|| – 空字符串” – 被评估(它是falsy),和(!disableFilter ||”)返回” – 一个假值,短路&&操作,并且不评估&& amp的第二操作数。因此,表达式的返回值是“”。

disableFilter === false,!disableFilter === true,这会短路||操作,则第&&被评估和返回。因此,表达式的返回值是{value:search}。

阅读更多关于logical operators here

原文地址:https://www.jb51.cc/angularjs/146181.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐