Sloved! see how below.
I'm trying to filter with angular both with custom function and input search.
My HTML look's like :
<md-list-item class="md-3-line" ng-repeat="guest in guestList | filter:filterGuests && searchInput" >
<div class="md-list-item-text">
<h3>{{guest.name}}</h3>
</div>
</md-list-item>
Where 'searchInput' is basic input tag and the function 'filterGuests' look's like:
$scope.filterGuests = function(guest){
if($scope.$parent.filters[guest.status] == true)
return true;
return false;
The thing that I'm trying to do is after the 'filterGuest' actually filtered the most of the guest , to be able also to perform the search. How I can achieve the filter both with the function and the input?
Sloved! I'v achieve that by changing both the HTML and the controller. In HTML i'v change it to :
<md-list-item class="md-3-line" ng-repeat="guest in guestList | filterGuests:searchInput:this" >
<div class="md-list-item-text">
<h3>{{guest.name}}</h3>
</div>
</md-list-item>
and I modified the controller , I take out the filter to be as:
.filter('filterGuests',function($log){
return function(guests,input,scope){
var result = [];
angular.forEach(guests,function(guest,key){
if(scope.$parent.filters[guest.status] == true && guest.name.search(input) > -1)
result.push(guest);
});
return result;
};
});
The parameters are passed into the filter as:
function(guests,input,scope)
All the list of the items(guests in my case) , the input for the search and the $scope(I need to access a variables outside of the scope) .
All the answers i'v found here : https://stackoverflow.com/a/11997076/2346370
Thanks Bas Slagter , I have no idea how I didn't think of passing another argument.