Nattu Raju
Nattu Raju

Reputation: 310

Angular Filter Always taking expresssion as 'and' | Not 'or'

<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.......
}
]

I need to filter the data based on parameters(param1, param2,...). Right now the code i written for filter the data like this

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

The above code filters data perfectly, but the problem is:

the result will be like this:

param1 && param2 so it performs "and" operation between two objects.

my question is how will we do "or" operation between two objects and returns all the data

Upvotes: 0

Views: 27

Answers (1)

Martijn Welker
Martijn Welker

Reputation: 5605

According to the Angular documentation you can also pass a function as filter, you can return true if the value should be included like so:

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

Upvotes: 1

Related Questions