2017-04-20 117 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如何在過濾器中使用多個參數。

相關問題