Je dois filtrer une liste d’articles par leur catégorie. Je souhaite que l’utilisateur puisse cliquer sur un bouton, puis appliquer le filtre à une liste.
Pour le moment, je travaille dans une certaine mesure.
Disons par exemple que j’ai une liste de films, rendus comme ça:
{{ movie.title }}
Et j’ai aussi une liste de genres de films (rendus sous forme de boutons, qui, une fois cliqués, filtreront la liste des films) rendus comme suit:
{{genre.name}}
(Tout ce que fait la fonction ‘changeGenre ()’ est de mettre à jour la scope pour montrer quel genre est en cours de visualisation).
Maintenant, cela fonctionne bien jusqu’à ce que je sois dans une situation où, disons, j’ai les 2 genres: «Action» et «Action Adventure». Lorsque je filtre par films avec le genre «Action», je ne reçois pas seulement une liste de films d’action, mais aussi des films Action Adventure.
Est-il possible d’obtenir une correspondance exacte à l’aide du filtre?
Ceci est maintenant fourni nativement dans le filtre. Vous pouvez simplement passer true au filtre pour permettre une correspondance ssortingcte.
{{ movie.title }}
Référées
Si quelqu’un veut utiliser le filtre du côté JavaScript, vous pouvez le faire comme:
$scope.filtered = $filter('filter')($scope.movieList, { genre.name: filters.genre}, true);
Notez le vrai à la fin … cela indique que c’est pour rechercher la correspondance exacte.
filter
peut aussi prendre une fonction où vous pouvez implémenter votre propre filtre. J’ai fait un plunker le montrant en action: http://plnkr.co/edit/v0uzGS?p=preview
Voici le code correspondant:
$scope.ChooseGenreFunction = function(genre) { $scope.filters = function(movie) { return movie.genre === genre; }; }; $scope.ChooseGenreSsortingng = function(genre) { $scope.filters = genre; };