¿Es posible pasar un argumento a la función de filtro para que pueda filtrar por cualquier nombre?
Algo como
$scope.weDontLike = function(item, name) {
console.log(arguments);
return item.name != name;
};
fuente
¿Es posible pasar un argumento a la función de filtro para que pueda filtrar por cualquier nombre?
Algo como
$scope.weDontLike = function(item, name) {
console.log(arguments);
return item.name != name;
};
En realidad, hay otra (tal vez una mejor solución) donde puede usar el filtro de 'filtro' nativo de angular y aún pasar argumentos a su filtro personalizado.
Considere el siguiente código:
<div ng-repeat="group in groups">
<li ng-repeat="friend in friends | filter:weDontLike(group.enemy.name)">
<span>{{friend.name}}</span>
<li>
</div>
Para que esto funcione, simplemente defina su filtro de la siguiente manera:
$scope.weDontLike = function(name) {
return function(friend) {
return friend.name != name;
}
}
Como puede ver aquí, weDontLike en realidad devuelve otra función que tiene su parámetro en su alcance, así como el elemento original que proviene del filtro.
Me tomó 2 días darme cuenta de que puedes hacer esto, todavía no he visto esta solución en ningún lado.
Pedido polaridad inversa de un filtro angularjs para ver cómo se puede utilizar esto para otras operaciones útiles con filtro.
Por lo que tengo entendido, no puede pasar argumentos a una función de filtro (cuando se usa el filtro de 'filtro'). Lo que tendría que hacer es escribir un filtro personalizado, algo como esto:
Aquí está el jsFiddle de trabajo: http://jsfiddle.net/pkozlowski_opensource/myr4a/1/
La otra alternativa simple, sin escribir filtros personalizados, es almacenar un nombre para filtrar en un alcance y luego escribir:
fuente
En realidad, puede pasar un parámetro ( http://docs.angularjs.org/api/ng.filter:filter ) y no necesita una función personalizada solo para esto. Si reescribe su HTML como se muestra a continuación, funcionará:
http://jsfiddle.net/ZfGx4/59/
fuente
filter:['Adam', 'john']
Simplemente puede hacer esto en la plantilla
En filtro
fuente
Ampliando la respuesta de pkozlowski.opensource y usando el
array's
método de filtro incorporado de JavaScript , una solución embellecida podría ser esta:Aquí está el enlace jsfiddle .
Más sobre el filtro de matriz aquí .
fuente
¡Puede pasar múltiples argumentos al filtro angular!
Definiendo mi aplicación angular y una variable de nivel de aplicación -
Su filtro será como: -
Y desde HTML enviará datos como: -
Aquí estoy enviando un objeto JSON al filtro. También puede enviar cualquier tipo de datos como cadenas o números.
también puede pasar un número dinámico de argumentos para filtrar, en ese caso, debe usar argumentos para obtener esos argumentos.
Para una demostración funcional, vaya aquí: pasando múltiples argumentos al filtro angular
fuente
Simplemente puede usar
| filter:yourFunction:arg
Y en js
fuente