Angular Filter

by infiniteloops

HTML

<body ng-app="myApp">
    <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'},
                           {name:'Juliette', phone:'555-5678'}]"></div>Name only
    <input ng-model="search.name">
    <br>
        <h3>Results</h3>
    <table id="searchObjResults">
        <tr>
            <th>Name</th>
            <th>Phone</th>
        </tr>
        <tr ng-repeat="friendObj in friends | customFilter:search | limitTo:1">
       
            <td>{{friendObj.name}}</td>
             <td>{{friendObj.phone}}</td>
        </tr>
    </table>        
</body>

JavaScript

var app = angular.module('myApp', []);
app.filter('customFilter', function(){ 
    return function(input, searchStr){ 
        var results = [];
        for(prop in searchStr){
            if(searchStr[prop].length === 0){continue;}        
            for(var i = 0; i < input.length; i++){  
                var item = input[i];                
                if(item[prop].indexOf(searchStr[prop]) === 0){
                   results.push(item);
                }
            }
        }
        return results;
    }
});