web-dev-qa-db-ja.com

カスタムフィルターではなく、angularフィルター関数で複数のパラメーターを渡す方法

私は一生懸命試し、このような同様の質問をたくさん訪問しましたが、それでもこの問題を解決できませんでした。

angularフィルター関数に追加のパラメーターを渡したいと思います。以下のように解決策を見つけましたが、機能しません。ng-repeatで使用したオブジェクトに対して未定義になります。

<li ng-repeat="user in users | filter:isStatus(user,secondParam)">{{user.name}}</li>

angularカスタムフィルターの解決策は以下のとおりですが、angularフィルター関数では機能しません。

<li ng-repeat="user in users | filter:isStatus:user:secondParam">{{user.name}}</li>

jsFiddle -ここで私の問題を確認できます。

9
Jay Shukla

しようとします:

$scope.isStatus = function(secondParam, thirdParam){
      return function(user) {
           console.log(secondParam);
           console.log(thirdParam);
           return user.status == $scope.status;
     }

更新されたバージョン http://jsfiddle.net/4PYZa/282/

14
user2700840

場合によっては、カスタムフィルターの代わりに述語式を使用できます。

<li ng-repeat="user in users | filter:{status: status, name: name}">{{user.name}}</li>

このフィドルを見てください: http://jsfiddle.net/ovym2tpr/28/

とにかくカスタムフィルターを使用できます。ネストされたng-repeatでは特にうまく機能しません。

4
shawmzhu

Angular.jsフィルターを複数の引数で呼び出すにはどうすればよいですか?

AngularJS:カスタムフィルターとng-repeat

 myApp.filter("isStatus ", function() { // register new filter
     return function(user, secondParam, thirdParam) { // filter arguments

       return user.status == $scope.status; // implementation
    };
 });

テンプレートから呼び出す

<li ng-repeat="user in users | isStatus:secondParam">{{user.name}}</li>
1
JQuery Guru

それはとても簡単です、これをしてください

<li ng-repeat="user in users | filter:user | filter : secondParam)">{{user.name}}</li>
1
Aditya Agarwal