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.itemsa una matriz o -2) prefiltrar los
ng-repeatelementos, 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-repeatconng-if:fuente
O simplemente usa
Vea la solución actualizada aquí:
http://jsfiddle.net/RFontana/WA2BE/93/
fuente
ng-iflugarSimplemente puede usar el módulo angular.filter , y luego puede filtrar incluso por propiedades anidadas.
ver: jsbin
2 Ejemplos:
JS:
HTML:
fuente
angular.filterno es un módulo angular central y que usted es el autor del mismo.toArrayfiltro ya no está presente. ¿Hay algún recambio, porque elfilterfiltro 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