Angular.js ng-repeat filtre par bien d'avoir l'une des valeurs multiples (OU de valeurs)
Est-il possible de filtrer un tableau d'objets, tels que la valeur de la propriété peut être de quelques valeurs (OU condition) sans écrire un filtre personnalisé
Ceci est similaire à ce problème - Angular.js ng-repeat :filtre par un seul champ
Mais au lieu de
<div ng-repeat="product in products | filter: { color: 'red' }">
est-il possible de faire quelque chose comme ceci
<div ng-repeat="product in products | filter: { color: 'red'||'blue' }">
pour un échantillon de données comme suit-
$scope.products = [
{ id: 1, name: 'test', color: 'red' },
{ id: 2, name: 'bob', color: 'blue' }
/*... etc... */
];
J'ai essayé, sans succès,
<div ng-repeat="product in products | filter: { color: ('red'||'blue') }">
- Qui pourrait vous aider, stackoverflow.com/questions/15868248/...
- consulter ma réponse - stackoverflow.com/questions/27606595/...
Vous devez vous connecter pour publier un commentaire.
Meilleure façon de le faire est d'utiliser une fonction:
Alternativement, vous pouvez utiliser ngHide ou ngShow dynamique d'afficher et de masquer des éléments basés sur un certain nombre de critères.
display
ànone
, mais lediv
sera générée et inséré dans les DOM. De toute façon je pense que la fonction est la façon la plus propre de le faire, ne fut curieux de savoir si il y avait une syntaxe pour spécifier une condition OU inline.Pour moi, il a travaillé comme indiqué ci-dessous..
JS:
ng-options
J'chose "ng-si" devrait fonctionner:
$index
fera référence à l'origine d'index de tableauEn HTML:
<div ng-repeat="product in products | filter: colorFilter">
Angulaire:
Ici est une façon de le faire en passant un argument supplémentaire:
https://stackoverflow.com/a/17813797/4533488 (merci à Denis Pshenov)
Avec le backend:
.
Et encore d'une autre façon avec un modèle de filtre seulement:
https://stackoverflow.com/a/12528093/4533488 (grâce à mikel)
J'ai trouvé un plus générique solution avec le plus angulaires-native solution je pense. Fondamentalement, vous pouvez passer votre propre comparaison de la valeur par défaut
filterFilter
fonction. Voici plunker ainsi.Après pas en mesure de trouver une bonne solution universelle à ce problème j'ai fait quelque chose de mon propre. Je ne l'ai pas testé pour une très grande liste.
Il prend soin de clés imbriquées,des tableaux ou juste au sujet de quoi que ce soit.
Ici est la github et démo
HTML