Javascript 当我在AngularJS中输入搜索文本时,如何关闭或打开几个过滤器

Javascript 当我在AngularJS中输入搜索文本时,如何关闭或打开几个过滤器,javascript,angularjs,Javascript,Angularjs,我有以下代码: <div class="item item-icon-right"> <input class="search" type="text" placeholder="search..." ng-model="searchText"> <button class="icon ion-search button-clear button-dark"></button> </div> <ion-it

我有以下代码:

<div class="item item-icon-right">
<input class="search" type="text" placeholder="search..." ng-model="searchText">
<button class="icon ion-search button-clear button-dark"></button>
            </div>
<ion-item ng-repeat="service in services | filter:{service_category_id:category_selected.id} | filter:{name:searchText} | filter:criteriaMatch(criteria)"
                      class="item-remove-animate item-icon-right" type="item-text-wrap" href="#" ng-class='determineSelect(service.level)'>
                {{service.name}}
                <button class="icon ion-ios-arrow-right button-clear button-dark" ng-click="selectParent(service)"></button>
                <ion-option-button ng-show = "services_selected.indexOf(service.id)==-1" class="button-energized" ng-click="addInterest(service)">
                    Add
                </ion-option-button>
            </ion-item>

{{service.name}
添加
正如您所看到的,在ng repeat部分中,我有3个过滤器,但我想要的是,当我开始键入输入(这也是一个过滤器)时,ng repeat部分中的所有过滤器都会关闭,而关于searchText的过滤器(这也是ng repeat部分)也会打开。
非常感谢!!:D

您需要实现自己的过滤器,并传递一个变量以启用或禁用它

function conditionalFilter() {
  return function(data, searchIsEmpty) {
       if(searchIsEmpty){
           //filter your data, you can inject $filter angular built-in
           return filteredData
       }
       return data

  }
}
然后在HTML中,将
searchText
作为变量传递给过滤器,如果搜索文本不是空的,过滤器将关闭

<ion-item ion-item ng-repeat="service in services | conditionalFilter:{service_category_id:category_selected.id}:searchText | conditionalFilter:{name:searchText}:searchText | filter:criteriaMatch(criteria)"
class="item-remove-animate item-icon-right" type="item-text-wrap" href="#" ng-class='determineSelect(service.level)'>