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