一尘不染

如何在angularJS中过滤多个值(或操作)

angularjs

我想使用filterin角度,并希望过滤多个值,如果它具有值之一,则应该显示它。

我有这样的结构:

movie具有属性的对象,genres我要过滤ActionComedy

我知道我可以做filter:({genres: 'Action'} || {genres: 'Comedy'}),但是如果我想动态过滤它该怎么办。例如filter: variableX

如何设置variableX$scope,当我有我有过滤器类型的数组?

我可以将其构造为字符串,然后执行一个操作,eval()但我不想使用eval()…


阅读 264

收藏
2020-07-04

共1个答案

一尘不染

我只是创建一个自定义过滤器。他们并不难。

angular.module('myFilters', []).
  filter('bygenre', function() {
    return function(movies,genres) {
      var out = [];
      // Filter logic here, adding matches to the out var.
      return out;
    }
  });

模板:

<h1>Movies</h1>

<div ng-init="movies = [
          {title:'Man on the Moon', genre:'action'},
          {title:'Meet the Robinsons', genre:'family'},
          {title:'Sphere', genre:'action'}
       ];" />
<input type="checkbox" ng-model="genrefilters.action" />Action
<br />
<input type="checkbox" ng-model="genrefilters.family" />Family
<br />{{genrefilters.action}}::{{genrefilters.family}}
<ul>
    <li ng-repeat="movie in movies | bygenre:genrefilters">{{movie.title}}: {{movie.genre}}</li>
</ul>

*链接 *编辑 在这里:创建角度过滤器

更新 :这是一个小提琴,有我的建议的确切演示。

2020-07-04