ng-repeat中的多个过滤器,其中一个需要精确匹配

时间:2017-02-01 08:53:25

标签: javascript angularjs filter

我已在ng-repeat中编写了此过滤器,这可以正常使用。

<tr ng-repeat="item in data | filter:{ Name:search, Country:country, MembershipType:membership} | filter: {Gender: gender}: true>

现在我需要一个按相同标准过滤的功能。我写了这个

$scope.getData = function () {
    return $filter('filter')($scope.data, { Name: $scope.search, Country: $scope.country, MembershipType: $scope.membership, Gender: $scope.gender })
}

其他人工作正常,但此功能不会返回性别的完全匹配。

我应该在功能中做些什么?

2 个答案:

答案 0 :(得分:2)

您可以使用第二个参数来使用完全匹配。就像你的html一样,你可以使用过滤器两次:

$scope.getData = function () {

    var filter = $filter('filter');

    // First filter the non-exact
    var filtered = filter($scope.data, { 
        Name: $scope.search, 
        Country: $scope.country, 
        MembershipType: $scope.membership 
    });

    // then the exact filters
    var genderFiltered = filter(filtered, { 
        Gender: $scope.gender 
    }, true);

    return genderFiltered;
}

答案 1 :(得分:0)

我也尝试过与@devqon一样的答案。但不能在这里发布重复的答案,所以我只是改变我的代码,如下所示。

  

你的ng-rpeate有两个过滤器,两次过滤数据。所以,你应该编写你的代码,如过滤方式的过滤器。

$scope.getData = function () {
        return $filter('filter')(($filter('filter')($scope.data, { Name: $scope.search, 
            Country: $scope.country, MembershipType: $scope.membership }), { 
            Gender: $scope.gender 
            }, true);
}
相关问题