¿Cómo utilizar un filtro en un controlador?

Resuelto sumanth asked hace 11 años • 15 respuestas

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.
}
sumanth avatar Jan 13 '13 16:01 sumanth
Aceptado

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 arg1está la matriz que desea filtrar y arg2el objeto utilizado para filtrar?

JSAddict avatar Jan 13 '2013 09:01 JSAddict

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 $filterdependencia y usar una sintaxis incómoda para invocarla ( $filter('filtername')(arg1,arg2);), se puede inyectar la dependencia siendo: nombre del filtro más el Filtersufijo.

Tomando un ejemplo de la pregunta se podría escribir:

function myCtrl($scope, filter1Filter) { 
  filter1Filter(input, arg1);
}

Cabe señalar que debe agregar Filteral 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

pkozlowski.opensource avatar Jan 13 '2013 12:01 pkozlowski.opensource