Recentemente, tive esse pequeno problema. Eu tinha um controlador angular simples, que filtrava alguns tipos de itens. Eu não queria definir o filtro em um “espaço global” porque sabia que ele seria usado apenas por este controlador. Portanto, a primeira coisa foi definir a função de filtro personalizado. Como isso
$scope.customFilter = (item)=> {
return item.someProperty == $scope.filterValue;
};
Em seguida, chame a UI assim.
<htmlElement ng-repeat="item in itemList | filter:customFilter"></htmlElement>
Até agora nada de especial, apenas o que está na documentação angular. Mas eu precisava chamar aquele filtro personalizado novamente, mas não da IU, mas de maneira programática. A maneira como invocar o filtro personalizado sem registrar a função via myAngularModule.filter (‘customFilter’, function () {…}) é esta.
var filteredItems = $filter('filter')($scope.itemList, $scope.customFilter)