angular.Array.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.Array for more information about Angular arrays.

Usage

angular.Array.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('name')).
      toEqual(['Mary', 'Mike', 'Adam']);

    input('searchText').enter('76');
    expect(repeater('#searchTextResults tr', 'friend in friends').column('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('name')).
      toEqual(['Mary', 'Mike', 'Julie']);
  });