Reutilizando un filtro Angular.js - Ver / Controlador
Esta solución cubre la reutilización de filtros angulares. Que es otra forma de filtrar datos, y Google me trajo aquí cuando lo necesitaba; y me gusta compartir
Caso de uso
Si ya está filtrando, digamos en una repetición ng en su vista (como se muestra a continuación), entonces es posible que haya definido un filtro en el controlador de la siguiente manera. Y luego puede reutilizar como en los ejemplos finales.
Ejemplo de uso de filtro: repetición filtrada en la vista
<div ng-app="someApp" ng-controller="someController">
<h2>Duplicates</h2>
<table class="table table-striped table-light table-bordered-light">
<thead>
<tr>
<th>Name</th>
<th>Gender</th>
</tr>
</thead>
<tbody>
<tr ng-repeat="person in data | filter: searchDuplicate:true">
<td>{{person.name}}</td>
<td>{{person.gender}}</td>
</tr>
</tbody>
</table>
</div>
Ejemplo de definición de filtro angular
angular.module('someApp',[])
.controller('someController', function($scope, $filter ) {
$scope.people = [{name: 'Bob', gender: 'male' , hasDuplicate: true },
{name: 'Bob', gender: 'male' , hasDuplicate: true },
{name: 'Bob', gender: 'female', hasDuplicate: false}];
$scope.searchDuplicate = { hasDuplicate : true };
})
Entonces, el concepto aquí es que ya está usando un filtro creado para su vista, y luego se da cuenta de que le gustaría usarlo también en su controlador.
Uso de la función de filtro dentro del controlador Ejemplo 1
var dup = $filter('filter')($scope.people, $scope.searchDuplicate, true)
Uso de la función de filtro dentro del controlador Ejemplo 2
Mostrar un botón solo si no se encuentran duplicados, utilizando el filtro anterior.
Botón HTML
<div ng-if="showButton()"><button class="btn btn-primary" ng-click="doSomething();"></button></div>
Botón Mostrar / Ocultar
$scope.doSomething = function(){ /* ... */ };
$scope.showButton = function(){ return $filter('filter')($scope.people, $scope.searchDuplicate, true).length == 0; };
Algunos pueden encontrar esta versión de filtrado fácil, y es una opción Angular.js.
El parámetro de comparación opcional "verdadero" utilizado en la vista y en la llamada a la función $ filter especifica que desea una comparación estricta. Si omite, los valores se pueden buscar en varias columnas.
https://docs.angularjs.org/api/ng/filter/filter