AngularJS Filtre Exact Match

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

    https://docs.angularjs.org/api/ng/filter/filter

    https://stackoverflow.com/a/18243147/1466430

    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; };