如何使用控制器'过滤器内的变量

时间:2017-04-20 14:24:52

标签: angularjs

我有一个过滤器,它应该使用控制器中的一些变量。 但是当我运行应用程序时,我的控制台出错:错误:无法找到变量:$ scope ...

这是我的过滤器:

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 个答案:

答案 0 :(得分: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,了解如何在过滤器中使用多个参数。