AngularJS滤波器精确匹配

AngularJS滤波器精确匹配,angularjs,Angularjs,我需要按项目类别筛选项目列表。我希望用户能够单击按钮,然后将过滤器应用于列表 目前,我已经在一定程度上做到了这一点 比如说,我有一个电影列表,呈现如下: <li ng-repeat="movie in movieList | filter:filters">{{ movie.title }}</li> <li ng-repeat="genre in genres"> <a ng-click="filters.genre = genre.name

我需要按项目类别筛选项目列表。我希望用户能够单击按钮,然后将过滤器应用于列表

目前,我已经在一定程度上做到了这一点

比如说,我有一个电影列表,呈现如下:

<li ng-repeat="movie in movieList | filter:filters">{{ movie.title }}</li>
<li ng-repeat="genre in genres">
    <a ng-click="filters.genre = genre.name" ng-click='changeGenre(genre.name)'>{{genre.name}}</a>
</li>
  • {{movie.title}
  • 我还有一个电影类型列表(呈现为按钮,单击按钮将过滤电影列表),如下所示:

    <li ng-repeat="movie in movieList | filter:filters">{{ movie.title }}</li>
    
    <li ng-repeat="genre in genres">
        <a ng-click="filters.genre = genre.name" ng-click='changeGenre(genre.name)'>{{genre.name}}</a>
    </li>
    
  • {{genre.name}
  • (所有“changegree()”函数所做的就是更新作用域以显示当前正在查看的类型)

    现在这很好,直到我有了一个场景,比如说我有两种类型:'动作'和'动作冒险'。当我按“动作”类型的电影进行筛选时,我不仅会得到动作电影的列表,还会得到动作冒险电影的列表


    是否有一种方法可以使用过滤器获得精确匹配?

    过滤器也可以使用一个功能,您可以实现自己的过滤器。我做了一个扑通一声的动作:

    以下是相关代码:

    $scope.ChooseGenreFunction = function(genre) {
      $scope.filters = function(movie) {
        return movie.genre === genre;
      };
    };
    $scope.ChooseGenreString = function(genre) {
      $scope.filters = genre;
    };
    

    现在,这是在过滤器中本机提供的。您只需将true传递给过滤器即可启用严格匹配

    <li ng-repeat="movie in movieList | filter : filters : true">{{ movie.title }}</li>
    
  • {{movie.title}
  • 推荐


    如果有人想在JavaScript端使用过滤器,您可以这样做:

    $scope.filtered = $filter('filter')($scope.movieList, { genre.name: filters.genre}, true);
    

    注意结尾处的真实情况。。。它表示要搜索精确的匹配项。

    请相信您想要编写一个自定义筛选器,感谢更新的信息。这容易多了。谢谢!为我节省了很多时间谢谢你添加了JS版本!谢谢你的帮助。节省了很多时间。