angularjs – 使有角滤波器有条件

前端之家收集整理的这篇文章主要介绍了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.f2er.com/angularjs/146181.html

猜你在找的Angularjs相关文章