nickponline
nickponline

Reputation: 25914

How do I use AngularJS search filter on a dictionary?

If I have a list:

items = [
 {
  name: name1
  value: value1
 },
 {
  name: name2
  value: value2
 }
]

The following HTML work perfectly:

<input ng-model='search_field'/>
<span ng-repeat='item in items | search_field>[[item]]</span>

But how can I use this functionality if items is a dictionary like this:

items = {
   name1 : value1,
   name1 : value2
}

I'd like to use the dictionary representation because it's a lot easier for the operations I'm going to be performing.

Upvotes: 1

Views: 1303

Answers (1)

btm1
btm1

Reputation: 3856

angular.module('filters',[])
  .filter('objFilter', function($filter){

    return function(input, query){
      if(!query) return input;
      var result = [];

      angular.forEach(input, function(v,k){
          result.push(v);          
      });

      var refined = $filter('filter')(result,query);

      return refined;
    };
  });

 <span ng-repeat='item in items | objFilter:query'></span>

Upvotes: 1

Related Questions