AngularJS Custom Filter

by Adrianus Kleemans

HTML

<body ng-app="TestApp" ng-controller="TestController">
    <p>Daten: {{ arrayOfObjects | json }}</p>
    <p>Suchen in Ort und Monat: <input type="text" ng-model="searchtext"></p>
    <p>Resultate mit myFilter: {{ arrayOfObjects | myFilter : searcharray : searchtext }} </p>
</body>

JavaScript

angular.module('TestApp', [])
.controller('TestController', function ($scope) {
	$scope.searchtext = 'Bern';
  $scope.searchobj = {'Ort': $scope.searchtext };
  $scope.searcharray = ['Ort', 'Monat'];
  $scope.myobj = [];
  $scope.arrayOfObjects = [
  	{'Ort': 'Bern', 'Erfasser': 'Bern', 'Monat': 'Juli'}, 
  	{'Ort': 'Gümligen', 'Erfasser': 'Bern', 'Monat': 'August'}, 
  	{'Ort': 'Zürich', 'Erfasser': 'Bern', 'Monat': 'Januar'}];
})
.filter('myFilter', function () {
    return function (elements, searcharray, searchtext) {
    		var out = [];
        angular.forEach(elements, function (element) {
        	angular.forEach(searcharray, function (attr) {
        		if (element[attr].indexOf(searchtext) !== -1 && out.indexOf(element) == -1) {
            	out.push(element);
            }
        	});
        });
        return out;
    };
});