从控制器

时间:2017-05-10 13:47:02

标签: angularjs filter

我的情景看似简单,但我尝试了很多方法而没有成功。 我需要在我的控制器上调用一个过滤器,这个过滤器用于一个掩码,将这个348845697990变成348.8456.979-90。好吧,请按照下面的代码: 1:我的模块:

angular.module('webclientody', []);

angular.module('webclientody').filter('cpf', function () {
return function (input) {
        var str = input + '';
        if (str.length <= 11) {
            str = str.replace(/\D/g, '');
            str = str.replace(/(\d{3})(\d)/, "$1.$2");
            str = str.replace(/(\d{3})(\d)/, "$1.$2");
            str = str.replace(/(\d{3})(\d{1,2})$/, "$1-$2");
        }
        return str;
    };
});

我的控制器:

angular.module('webclientody').controller('LoginCtrl', function ($scope, 
$http, $location, $cookies, $rootScope, apiUrl, $filter) {

    $scope.init = function () {

        var cpf = "348845697990";
        cpf = $filter("cpf")(cpf);

    };

    $scope.init();

});

如果我剪切此代码并在一个小的单独项目上测试它,它就可以了。但是,在我的项目中出现错误:

> Error: [$injector:unpr] http://errors.angularjs.org/1.5.5/$injector/unpr?p0=cpfFilterProvider%20%3C-%20cpfFilter
    at angular.js:38
    at angular.js:4458
    at Object.d [as get] (angular.js:4611)
    at angular.js:4463
    at Object.d [as get] (angular.js:4611)
    at angular.js:19531
    at b.$scope.init (LoginCtrl.js:6)
    at new <anonymous> (LoginCtrl.js:10)
    at Object.invoke (angular.js:4665)
    at R.instance (angular.js:10115)

我尝试了几种方法,但它总是会返回此错误。有人有什么建议吗?

很多!

2 个答案:

答案 0 :(得分:0)

您错过了注入ngCookies模块。并检查是否包括apiUrl

  angular.module('webclientody', ['ngCookies']);

https://docs.angularjs.org/api/ngCookies/service/ $饼干

答案 1 :(得分:0)

尝试将cpf过滤器注入您的控制器:

angular.module('webclientody')
       .controller('LoginCtrl', function ($scope, $http, $location, $cookies, $rootScope, apiUrl, cpf) {}

并使用如下:

var testData = "348845697990";
cpf(testData);