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)'>