AngularJS搜索过滤器与其他过滤器

时间:2014-06-26 20:08:13

标签: angularjs angularjs-ng-repeat angularjs-filter

我的代码如下:

<input type='text' ng-model="search.$">
<li ng-repeat="item in items" |filter:isExpired | filter:search>{{item.name}}</li>

目前,items有一个布尔属性来指示它是否已过期,页面显示所有未过期的项目。

在搜索时,我想显示所有项目,包括过期项目。有没有办法在搜索时切换isExpired过滤器?或者我需要开发自己的自定义过滤器?如果是这样,任何人都可以给我一个方法的想法吗?

非常感谢任何帮助!

1 个答案:

答案 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>