我的代码如下:
<input type='text' ng-model="search.$">
<li ng-repeat="item in items" |filter:isExpired | filter:search>{{item.name}}</li>
目前,items有一个布尔属性来指示它是否已过期,页面显示所有未过期的项目。
在搜索时,我想显示所有项目,包括过期项目。有没有办法在搜索时切换isExpired过滤器?或者我需要开发自己的自定义过滤器?如果是这样,任何人都可以给我一个方法的想法吗?
非常感谢任何帮助!
答案 0 :(得分:0)
您可以在控制器中进行过滤:
.controller('YourController', function($scope, $filter){
$scope.getItems = function() {
var filtered;
if($scope.search) {
filtered = $filter('filter')($scope.items, $scope.search);
}
else{
filtered = $filter('filter')($scope.items, {isExpired: false});
}
return filtered;
}
});
然后,你的ng-repeat看起来像这样:
<li ng-repeat="item in getItems()">{{item.name}}</li>