He escrito una función de filtro que devolverá datos en función del argumento que está 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.
}
angularjs
angular-filters
ng-controller
sumanth
fuente
fuente
Respuestas:
Inyecte $ filter a su controlador
Luego, donde quiera usar ese filtro, simplemente úselo de esta manera:
Si desea pasar argumentos a ese filtro, hágalo usando paréntesis separados:
¿Dónde
arg1
está la matriz que desea filtrar yarg2
es el objeto utilizado para filtrar?fuente
var anyNumber = $filter('number')(12.222222, 2);
para obtener12.22
.$filter("currency")(price, "$", 2)
Entonces, si tuviera un precio = 200, esa expresión devolvería "$ 200.00".$filter('filtter1')
(2 t). Sin embargo, si inyectafiltter1Filter
Angular se quejará inmediatamente de que la dependencia no existe.La respuesta proporcionada por @Prashanth es correcta, pero hay una forma aún más fácil de hacer lo mismo. Básicamente, en lugar de inyectar la
$filter
dependencia y usar una sintaxis incómoda de invocarla ($filter('filtername')(arg1,arg2);
) se puede inyectar la dependencia siendo: nombre del filtro más elFilter
sufijo.Tomando ejemplo de la pregunta que uno podría escribir:
Debe tenerse en cuenta que debe agregar
Filter
al nombre del filtro, sin importar la convención de nomenclatura que esté utilizando: se hace referencia a foo llamando afooFilter
fooFilter llamando a
fooFilterFilter
fuente
Usando el siguiente código de muestra, podemos filtrar la matriz en el controlador angular por nombre. Esto se basa en la siguiente descripción. http://docs.angularjs.org/guide/filter
this.filteredArray = filterFilter (this.array, {nombre: 'Igor'});
JS:
HTML
fuente
Aquí hay otro ejemplo de uso
filter
en un controlador angular:Simple, ¿eh?
fuente
Hay tres formas posibles de hacer esto.
Supongamos que tiene el siguiente filtro simple, que convierte una cadena en mayúsculas, con un parámetro solo para el primer carácter.
Directamente a través de
$filter
Nota: esto le da acceso a todos sus filtros.
Asignar
$filter
a unvariable
Esta opción le permite usar
$filter
como afunction
.Cargue solo un específico
Filter
Puede cargar solo un filtro específico agregando el nombre del filtro con
Filter
.El que usa es de preferencia personal, pero recomiendo usar el tercero, porque es la opción más fácil de leer.
fuente
fuente
Tengo otro ejemplo que hice para mi proceso:
Obtengo una matriz con valor-Descripción como esta
en mi Filters.js:
Luego, una prueba var (controlador):
fuente
AngularJs le permite usar filtros dentro de la plantilla o dentro del controlador, directiva, etc.
en la plantilla puedes usar esta sintaxis
y dentro del controlador puedes usar inyectando el servicio $ filter
Si necesita más con el ejemplo de demostración aquí hay un enlace
Ejemplos de filtros AngularJs y demostración
fuente
Hay otra forma de evaluar los filtros que reflejan la sintaxis de las vistas. La invocación es complicada, pero podría crear un acceso directo a ella. Me gusta que la sintaxis de la cadena sea idéntica a la que tendría en una vista. Se ve como esto:
fuente
Parece que nadie ha mencionado que puede usar una función como arg2 en $ filter ('filtername') (arg1, arg2);
Por ejemplo:
fuente
El ejemplo simple de fecha usando $ filter en un controlador sería:
Como se explica aquí: https://stackoverflow.com/a/20131782/262140
fuente
Use el código a continuación si queremos agregar múltiples condiciones, en lugar de un solo valor en el filtro angular de JavaScript:
fuente
En primer lugar, inyecte $ filter en su controlador, asegurándose de que ngSanitize esté cargado en su aplicación, más tarde dentro del uso del controlador es el siguiente:
Siempre revisa los documentos de angularjs
fuente
si quieres filtrar objetos en el controlador prueba esto
Esto devolverá el objeto filtrado de acuerdo con la condición if
fuente
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
Ejemplo de definición de filtro angular
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
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
Botón Mostrar / Ocultar
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
fuente