Je veux utiliser le filter
dans angular et je veux filtrer plusieurs valeurs, s'il a l'une des valeurs, il devrait être affiché.
J'ai par exemple cette structure:
Un objet movie
qui a la propriété genres
et je veux filtrer pour Action
et Comedy
.
Je sais que je peux faire filter:({genres: 'Action'} || {genres: 'Comedy'})
, mais que faire si je veux le filtrer dynamiquement. Par exemplefilter: variableX
Comment définir variableX
dans le $scope
, quand j'ai un tableau des genres que je dois filtrer?
Je pourrais le construire sous forme de chaîne et ensuite faire un eval()
mais je ne veux pas utiliser eval () ...
javascript
angularjs
angularjs-ng-repeat
JustGoscha
la source
la source
filter:({genres: 'Action'} || {genres: 'Comedy'})
cela fonctionne même? ça ne rentre pasangular 1.3.16
.Réponses:
Je créerais simplement un filtre personnalisé. Ils ne sont pas si difficiles.
modèle:
Modifier voici le lien: Création de filtres angulaires
MISE À JOUR : Voici un violon qui a une démo exacte de ma suggestion.
la source
Vous pouvez utiliser une fonction de contrôleur pour filtrer.
HTML:
la source
$scope.filteredMovies = $filter('filter')($scope.movies, $scope.filterByGenres);
Créer un filtre personnalisé peut être excessif ici, vous pouvez simplement passer un comparateur personnalisé, si vous avez des valeurs multiples comme:
puis dans le filtre:
la source
ng-model
fichier de vue à lier au filtre décrit? (désolé, apprendre encore ici) - Je aime la simplicité de votre réponse et d' essayer de le faire fonctionner , mais ne savez pas comment étiqueter mes<input>
« sng-model
. :)Voici l'implémentation du filtre personnalisé, qui filtrera les données à l'aide d'un tableau de valeurs.Il prendra en charge plusieurs objets clés avec à la fois un tableau et une valeur unique de clés. Comme mentionné dans l'API inangularJS AngularJS filter Doc prend en charge plusieurs filtres de clés avec une seule valeur, mais le filtre personnalisé ci-dessous prendra en charge la même fonctionnalité que angularJS et prend également en charge un tableau de valeurs et une combinaison de tableau et de valeur unique de clés.Veuillez trouver l'extrait de code ci-dessous,
Usage:
Voici un exemple de violon avec l'implémentation du filtre personnalisé "filterMutiple" ci-dessus . ::: Exemple de violon :::
la source
length property undefined
erreur dans la console.if (fData.length > 0){ this.filteredData = fData; }
en juste:this.filteredData = fData;
Si vous souhaitez filtrer sur un tableau d'objets, vous pouvez donner
filter:({genres: 'Action', key :value }.
La propriété individuelle sera filtrée par un filtre particulier donné pour cette propriété.
Mais si vous vouliez quelque chose comme filtrer par propriété individuelle et filtrer globalement pour toutes les propriétés, vous pouvez faire quelque chose comme ça.
~ Atul
la source
J'ai passé du temps dessus et grâce à @chrismarx, j'ai vu que le défaut angulaire
filterFilter
vous permet de passer votre propre comparateur. Voici le comparateur modifié pour plusieurs valeurs:Et si nous voulons créer un filtre personnalisé pour DRY:
Et puis nous pouvons l'utiliser partout où nous voulons:
Enfin voici un plunkr .
Remarque: le tableau attendu ne doit contenir que des objets simples tels que String , Number, etc.
la source
vous pouvez utiliser le filtre searchField de angular.filter
JS:
HTML:
la source
search
arrêts ici.Vous pouvez également utiliser
ngIf
si la situation le permet:la source
La solution la plus rapide que j'ai trouvée est d'utiliser le
filterBy
filtre de angular-filter , par exemple:L'avantage est que angular-filter est une bibliothèque assez populaire (~ 2,6k étoiles sur GitHub) qui est toujours activement développée et maintenue, donc ça devrait être bien de l'ajouter à votre projet en tant que dépendance.
la source
Je crois que c'est ce que vous recherchez:
la source
Veuillez essayer ceci
la source
Supposons que vous ayez deux tableaux, un pour le film et un pour le genre
Utilisez simplement le filtre comme:
filter:{genres: genres.type}
Ici, les genres étant le tableau et le type ont une valeur pour le genre
la source
J'ai écrit ceci pour les chaînes ET la fonctionnalité (je sais que ce n'est pas la question mais je l'ai recherchée et je suis arrivée ici), peut-être qu'elle peut être étendue.
Usage:
la source
Module angulaire ou filtre
$filter('orFilter')([{..}, {..} ...], {arg1, arg2, ...}, false)
voici le lien: https://github.com/webyonet/angular-or-filter
la source
J'ai eu une situation similaire. L'écriture d'un filtre personnalisé a fonctionné pour moi. J'espère que cela t'aides!
JS:
HTML:
la source
Voici mon exemple comment créer un filtre et une directive pour la table jsfiddle
directive get list (datas) et créer une table avec des filtres
mon plaisir si je vous aide
la source
Il est trop tard pour rejoindre le groupe, mais cela peut peut-être aider quelqu'un:
Nous pouvons le faire en deux étapes, d'abord filtrer par première propriété puis concaténer par second filtre:
Voir le violon de travail avec un filtre de propriétés multiples
la source
OPTION 1: Utilisation du paramètre de comparateur de filtre fourni angulaire
OPTION 2: Utilisation de la négation de filtre fournisseur angulaire
la source
Ma solution
la source
la meilleure réponse est:
la source