如果将过滤器表达式设置为
''(或
undefined)(这会导致不应用过滤器)(
disableFilter设置您的时间),否则将其设置为实际过滤器表达式,则可以实现此目的。
编辑2
:另一个答案(@Ryan下面)更简单易懂。现在不记得它最初是否对我不起作用,或者我只是没有想到这种简单的方法。
因此,假设此切换变量
disableFilter--是布尔值:
<a ng-repeat="set in data | filter: (!disableFilter || '') && filterexpression">
(可以
filterexpression是您要过滤的任何表达式)。您的具体情况是:
<a ng-repeat="set in data | filter: (!disableFilter || '') && {value: search}">编辑:
解释上面的工作原理。
- 记住这一点,
||
并&&
返回其操作数之一的值。 ||
并&&
使用短路评估-true || (anything)
收益true
;false && (anything)
返回false
-不评估(anything)
表达式。''
是虚假的(或者undefined
,如果更清楚,请改用)
所以,
当
disableFilter === true,时
!disableFilter ===false,则对第二个操作数
||-空字符串
''-进行求值(是虚假的),并
(!disableFilter ||'')返回
''-虚假的值,该值会使
&&操作短路,并且不对的第二个操作数求值
&&。因此,表达式的返回值为
''。
当
disableFilter === false,
!disableFilter ===true短路
||操作时,将
&&评估并返回的第二个操作数。因此,表达式的返回值为
{value: search}。在此处阅读有关逻辑运算符的更多信息



