私は一生懸命試し、このような同様の質問をたくさん訪問しましたが、それでもこの問題を解決できませんでした。
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 -ここで私の問題を確認できます。
しようとします:
$scope.isStatus = function(secondParam, thirdParam){
return function(user) {
console.log(secondParam);
console.log(thirdParam);
return user.status == $scope.status;
}
更新されたバージョン http://jsfiddle.net/4PYZa/282/
場合によっては、カスタムフィルターの代わりに述語式を使用できます。
<li ng-repeat="user in users | filter:{status: status, name: name}">{{user.name}}</li>
このフィドルを見てください: http://jsfiddle.net/ovym2tpr/28/
とにかくカスタムフィルターを使用できます。ネストされたng-repeat
では特にうまく機能しません。
Angular.jsフィルターを複数の引数で呼び出すにはどうすればよいですか?
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>
それはとても簡単です、これをしてください
<li ng-repeat="user in users | filter:user | filter : secondParam)">{{user.name}}</li>