1. ホーム
  2. javascript

[解決済み] angularJSで複数の値をフィルタリングする方法(OR演算)

2022-06-12 12:55:17

質問

を使いたいのですが filter を使用して、複数の値をフィルタリングし、いずれかの値を持つ場合、それを表示する必要があります。

例えばこんな構造です。

オブジェクト movie というプロパティを持つ genres というプロパティがあり、それをフィルタリングして ActionComedy .

ができることは知っています。 filter:({genres: 'Action'} || {genres: 'Comedy'}) ができるのは知っていますが、動的にフィルタリングしたい場合はどうすればよいのでしょう。例えば filter: variableX

どのようにすれば variableX の中に $scope という配列がある場合、フィルタリングする必要があるのでしょうか?

文字列として構築して、それを eval() ということもできますが、eval()は使いたくありません...。

どのように解決するのですか?

カスタムフィルタを作成すればいいのです。 それほど難しいことではありません。

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>

編集 リンクはこちらです。 Angularフィルタを作成する

アップデイト : ここでは フィドル で、私の提案の正確なデモを見ることができます。