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;
}
});