J'essaye de faire quelque chose comme:
<div ng-controller="TestCtrl">
<div ng-repeat="(k,v) in items | filter:hasSecurityId">
{{k}} {{v.pos}}
</div>
</div>
Partie AngularJs:
function TestCtrl($scope)
{
$scope.items = {
'A2F0C7':{'secId':'12345', 'pos':'a20'},
'C8B3D1':{'pos':'b10'}
};
$scope.hasSecurityId = function(k,v)
{
return v.hasOwnProperty('secId');
}
}
Mais d'une manière ou d'une autre, il me montre tous les articles. Comment filtrer sur (clé, valeur)?
Réponses:
Les filtres angulaires ne peuvent être appliqués qu'aux tableaux et non aux objets, à partir de l'API angular -
Vous avez deux options ici:
1) déplacer
$scope.items
vers un tableau ou -2) pré-filtrer les
ng-repeat
éléments, comme ceci:Et sur le contrôleur:
jsfiddle : http://jsfiddle.net/bmleite/WA2BE/
la source
Ma solution serait de créer un filtre personnalisé et de l'utiliser:
Et en html:
la source
Vous pouvez également utiliser
ng-repeat
avecng-if
:la source
Ou utilisez simplement
Voir la solution mise à jour ici:
http://jsfiddle.net/RFontana/WA2BE/93/
la source
ng-if
placeVous pouvez simplement utiliser le module angular.filter , puis vous pouvez filtrer même par propriétés imbriquées.
voir: jsbin
2 Exemples:
JS:
HTML:
la source
angular.filter
ne s'agit pas d'un module angulaire principal et que vous en êtes l'auteur.toArray
filtre n'est plus présent. Y a-t-il un remplacement, car lefilter
filtre ne permet toujours pas les objets?Il est un peu tard, mais j'ai cherché un filtre similaire et j'ai fini par utiliser quelque chose comme ceci:
la source
Bien que cette question soit plutôt ancienne, j'aimerais partager ma solution pour les développeurs angular 1. Le but est de simplement réutiliser le filtre angulaire d'origine, mais en passant de manière transparente tous les objets sous forme de tableau.
utilisez-le comme ceci:
voici un plunker
la source
J'ai fait un peu plus d'un filtre générique que j'ai déjà utilisé dans plusieurs projets:
HTML:
JS:
la source