角度过滤器始终表达为'和' |不是'或'

时间:2016-01-20 14:12:06

标签: angularjs

<select ng-model="healthparameters.companyidfilter">
<option></option>
</select>

<select ng-model="parameters.nameidfilter">
<option></option>
</select>

$scope.all_users = [
{
        "param0": "value",
        "param1": "value",
        "param2": "value",
        "param3": "value",
        "param4": "value",
        "param5": "value",
        "param6": "value",
        "param7": "value",
        "param8": "value",
        "param9": "value",
        "param10": "value",
        "param11": "value",
        "param12": "value",
        "param13": "value",
        "param14": "value",
        "param15": "value",
        "param16": "value",
        "param17": "value",
        "param18": "value",
        "param19": "value",
        "param20": "value",
        "param21": "value",
        "param22": "value",
        "param23": "value",
        "param24": "value",
        "param25": "value",
        "param26": "value",
        "param27": "value",
        "param28": "value",
        "param29": "value",
        "param30": "value"
},
{
      and so on.......
}
]

我需要根据参数(param1,param2,...)过滤数据。现在我编写的代码用于过滤像这样的数据

var filtered;   
filtered = $filter('filter')($scope.all_users, {param1 : $scope.parameters.companyidfilter,param2: $scope.parameters.nameidfilter,......})

上面的代码完美地过滤了数据,但问题是:

结果将如下:

param1&amp;&amp; param2所以它执行&#34;和&#34;两个物体之间的操作。

我的问题是我们将如何做&#34;或&#34;两个对象之间的操作并返回所有数据

1 个答案:

答案 0 :(得分:1)

根据Angular documentation,您还可以将函数作为过滤器传递,如果值应该包含在内,则可以返回true:

var filtered = $filter('filter')(
    $scope.all_users,
    function(value, index, array) {
        return value.param1 === $scope.parameters.companyidfilter || value.param2 === $scope.parameters.nameidfilter;
    }
);