¿Cómo utilizar un filtro en un controlador?
He escrito una función de filtro que devolverá datos según el argumento que estás pasando. Quiero la misma funcionalidad en mi controlador. ¿Es posible reutilizar la función de filtro en un controlador?
Esto es lo que he probado hasta ahora:
function myCtrl($scope,filter1)
{
// i simply used the filter function name, it is not working.
}
Inyecte $filter a su controlador
function myCtrl($scope, $filter)
{
}
Luego, donde quieras usar ese filtro, úsalo así:
$filter('filtername');
Si desea pasar argumentos a ese filtro, hágalo usando paréntesis separados:
function myCtrl($scope, $filter)
{
$filter('filtername')(arg1,arg2);
}
¿Dónde arg1
está la matriz que desea filtrar y arg2
el objeto utilizado para filtrar?
La respuesta proporcionada por @Prashanth es correcta, pero hay una forma aún más sencilla de hacer lo mismo. Básicamente, en lugar de inyectar la $filter
dependencia y usar una sintaxis incómoda para invocarla ( $filter('filtername')(arg1,arg2);
), se puede inyectar la dependencia siendo: nombre del filtro más el Filter
sufijo.
Tomando un ejemplo de la pregunta se podría escribir:
function myCtrl($scope, filter1Filter) {
filter1Filter(input, arg1);
}
Cabe señalar que debe agregar Filter
al nombre del filtro, sin importar qué convención de nomenclatura esté utilizando: se hace referencia a foo llamando a fooFilter
fooFilter se hace referencia llamandofooFilterFilter