angular.module.ng.$filter.filter

Description

Selects a subset of items from array and returns it as a new array.

Note: This function is used to augment the Array type in Angular expressions. See angular.module.ng.$filter for more information about Angular arrays.

Usage

In HTML Template Binding

{{ filter_expression | filter:expression }}

In JavaScript

$filter('filter')(array, expression)

Parameters

Example

  <div ng-init="friends = [{name:'John', phone:'555-1276'},
                           {name:'Mary', phone:'800-BIG-MARY'},
                           {name:'Mike', phone:'555-4321'},
                           {name:'Adam', phone:'555-5678'},
                           {name:'Julie', phone:'555-8765'}]"></div>

  Search: <input ng-model="searchText"/>
  <table id="searchTextResults">
    <tr><th>Name</th><th>Phone</th><tr>
    <tr ng-repeat="friend in friends | filter:searchText">
      <td>{{friend.name}}</td>
      <td>{{friend.phone}}</td>
    <tr>
  </table>
  <hr>
  Any: <input ng-model="search.$"/> <br>
  Name only <input ng-model="search.name"/><br>
  Phone only <input ng-model="search.phone"/><br>
  <table id="searchObjResults">
    <tr><th>Name</th><th>Phone</th><tr>
    <tr ng-repeat="friend in friends | filter:search">
      <td>{{friend.name}}</td>
      <td>{{friend.phone}}</td>
    <tr>
  </table>
  it('should search across all fields when filtering with a string', function() {
    input('searchText').enter('m');
    expect(repeater('#searchTextResults tr', 'friend in friends').column('friend.name')).
      toEqual(['Mary', 'Mike', 'Adam']);

    input('searchText').enter('76');
    expect(repeater('#searchTextResults tr', 'friend in friends').column('friend.name')).
      toEqual(['John', 'Julie']);
  });

  it('should search in specific fields when filtering with a predicate object', function() {
    input('search.$').enter('i');
    expect(repeater('#searchObjResults tr', 'friend in friends').column('friend.name')).
      toEqual(['Mary', 'Mike', 'Julie']);
  });