我目前正在使用文本输入过滤项目列表。我想让它这样当一个特定的变量设置,列表不进行过滤,无论是什么文本输入。任何建议,如何我可以完成这个?
<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