Angular: custom filter, 2 params

http://angularjs.org/

by mrajcok

HTML

<div ng-controller="MyCtrl">
   <div ng-repeat="user in users">
      <input type="text" ng-model="searchText">
      <div ng-repeat="friend in user.friends | myFilter:searchText:user.name">
          {{user.name}} {{friend.name}} {{friend.age}}
      </div>
   </div>
</div>

JavaScript

var myApp = angular.module('myApp', []);

myApp.filter('myFilter', function() {
    return function(friends, searchText, username) {
        var searchRegx = new RegExp(searchText, "i");
        if ((searchText == undefined) || (username.search(searchRegx) != -1)) {
            return friends;
        }
        var result = [];
        for (i = 0; i < friends.length; i++) {
            if (friends[i].name.search(searchRegx) != -1 || 
                friends[i].age.toString().search(searchText) != -1) {
                result.push(friends[i]);
            }
        }
        return result;
    }
});

function MyCtrl($scope) {
    $scope.users = [{
        id: 1,
        name: 'Adam',
        friends: [{
            name: 'John',
            age: 21,
            sex: 'M'},
        {
            name: 'Brad',
            age: 32,
            sex: 'M'}]}];
}