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