AngularJs - nGRepeat with Expression filter
by douglasloyo
HTML
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.6.4/angular.min.js"></script>
<div ng-app="myApp">
<div ng-controller="homeController">
<input type="text" placeholder="Type expression." ng-model="search" />
<div ng-repeat="d in data | expressionfilter:search">
{{d.val}} - {{d.name}}
</div>
</div>
</div>
JavaScript
/* Application */
var myApp = angular.module('myApp', []);
myApp.controller('homeController', function ($scope) {
$scope.data = [{val:1, name:'john'},
{val:2, name:'jon'},
{val:2, name:'Jay'},
{val:1, name:'Adam'},
{val:3, name:'Mario'},
{val:3, name:'Jose'},
{val:1, name:'Jane'},
{val:4, name:'Marcus'}];
});
myApp.filter('expressionfilter', ['$filter', function($filter) {
return function( items, condition) {
var filtered = [];
if(condition === undefined || condition === ''){
return items;
}
console.log(condition);
// Inspect condition to see if expression
filtered = $filter('filter')(items, condition);
return filtered;
};
}]);