2017-04-20 12 views
0

コントローラからの変数を使用するフィルタがあります。 しかし、私はアプリケーションを実行すると、私のコンソールにエラーがあります。エラー:変数が見つかりません:$スコープは...ここフィルタ内でコントローラの変数を使用する方法

が私のフィルタである。その後、

calcM.filter('money', function() { 
    return function (premium) { 
     if (isNaN(premium) || premium < 1) { 
      return premium; 
     } else { 
      if ($scope.data.pickedOptions.currency == $scope.currency.USD) { 
       return premium + 'USD' 
      } else if ($scope.data.pickedOptions.currency == $scope.currency.EUR) { 
       return premium + 'EUR' 
      } 
     } 
    } 
}); 

そして、私のコントローラを行きます:

calcM.controller('calcMCtrl', function($scope, $http, $window) {...}); 

コントローラにこのフィルタを含めると、別の注入エラーが発生します。

+1

ビュー/テンプレートで変数/入力を使用する場合は、変数/入力をフィルタに渡す必要があります。 [currency](https://docs.angularjs.org/api/ng/filter/currency)のような例として、既存のフィルタのいくつかをご覧ください。フィルターを使用しているコントローラーから値を自動的に取得するフィルターには依存しないでください。 – Igor

答えて

0

として、あなたは、フィルタ内の引数を渡す必要があり、コメントで述べている:

calcM.filter('money', function() { 
    return function (premium, currency, pickedOptions) { 
     if (isNaN(premium) || premium < 1) { 
      return premium; 
     } else { 
      if (pickedOptions.currency == currency.USD) { 
       return premium + 'USD' 
      } else if (pickedOptions.currency == currency.EUR) { 
       return premium + 'EUR' 
      } 
      return premium; 
     } 
    } 
}); 

は、フィルタに複数の引数を使用する方法についてこのanswerを参照してください。

関連する問題