Estoy tratando de hacer algo como:
<div ng-controller="TestCtrl">
<div ng-repeat="(k,v) in items | filter:hasSecurityId">
{{k}} {{v.pos}}
</div>
</div>
Parte de AngularJs:
function TestCtrl($scope)
{
$scope.items = {
'A2F0C7':{'secId':'12345', 'pos':'a20'},
'C8B3D1':{'pos':'b10'}
};
$scope.hasSecurityId = function(k,v)
{
return v.hasOwnProperty('secId');
}
}
Pero de alguna manera, me muestra todos los elementos. ¿Cómo puedo filtrar por (clave, valor)?
Respuestas:
Los filtros angulares solo se pueden aplicar a matrices y no a objetos, desde la API de angular -
Aquí tiene dos opciones:
1) mover
$scope.items
a una matriz o -2) prefiltrar los
ng-repeat
elementos, como este:Y en el controlador:
jsfiddle : http://jsfiddle.net/bmleite/WA2BE/
fuente
Mi solución sería crear un filtro personalizado y usarlo:
Y en html:
fuente
También puedes usarlo
ng-repeat
conng-if
:fuente
O simplemente usa
Vea la solución actualizada aquí:
http://jsfiddle.net/RFontana/WA2BE/93/
fuente
ng-if
lugarSimplemente puede usar el módulo angular.filter , y luego puede filtrar incluso por propiedades anidadas.
ver: jsbin
2 Ejemplos:
JS:
HTML:
fuente
angular.filter
no es un módulo angular central y que usted es el autor del mismo.toArray
filtro ya no está presente. ¿Hay algún recambio, porque elfilter
filtro todavía no admite objetos?Es un poco tarde, pero busqué un filtro similar y terminé usando algo como esto:
fuente
Aunque esta pregunta es bastante antigua, me gustaría compartir mi solución para desarrolladores de angular 1. El punto es simplemente reutilizar el filtro angular original, pero pasando de forma transparente cualquier objeto como una matriz.
úsalo así:
aquí hay un plunker
fuente
Hice un filtro un poco más genérico que ya he usado en varios proyectos:
HTML:
JS:
fuente