Damian Hetman
Damian Hetman

Reputation: 382

Multiple filter in ng-repeat

I need help with filtering data in ng-repeat. I've tried to do few things but I can't find solution that works in my case. I need to to something like this:

sensor in sensors | filter: { group: group.id, (name: search || description: search) }

Search is ng-model (text input) and group.id is ID of group that are genereted in ng-repeat (I have two nested ng-repeat). I've tried to do my filter:

$scope.search = '';
    $scope.searchFilter = function() {
        return function (p) {
            if ($scope.search!='') {
                for (var i in p) {
                    console.log("p.name: "+p.name+", search: "+$scope.search);
                    if (p.name == $scope.search || p.description == $scope.search) {
                        return p;
                    }
                }
            } else {
                return p;
            }

        }
    }

Almost works. It filters my data but only if I write correct name. For example I want to find "engine". If I start writing "en" there is no data but if I write "engine" it will display correct data. So I need to work on that too. I hope you understand what I want to do.

Upvotes: 1

Views: 4415

Answers (1)

Damian Hetman
Damian Hetman

Reputation: 382

I've found solution!

sensor in sensors  filter: { group: group.id } | filter: searchFilter()

And this:

$scope.search = '';
$scope.searchFilter = function() {
    return function (p) {
        if ($scope.search!='') {
            for (var i in p) {
                var re = new RegExp($scope.search, 'i'); // This I've add
                if (p.name.match(re) || p.description.match(re) ) { // This I've change
                    return true;
                }
            }
        } else {
            return true;
        }

    }
}

Upvotes: 2

Related Questions