无法将本机角度服务注入自定义提供程序

时间:2015-03-15 01:33:57

标签: angularjs angularjs-service angularjs-provider

我正在尝试创建一个提供程序来处理我的应用程序中的身份验证

     function Authenticator($http) {
        console.log($http);
        return {
            test: function() {}
        }
    }

    app.provider('authenticator', function AuthenticatorProvider() {

        this.config = function () {
            var requestParams;
            return {
                setRequestParams: function (params) {
                    requestParams = params;
                }
            }
        }();


        this.$get = function($http) {
            return new Authenticator($http);
        };

    });

当我运行上面的代码时,$ http设置为undefined。我究竟做错了什么?将$ http服务注入自定义提供程序的正确方法是什么?

谢谢

1 个答案:

答案 0 :(得分:4)

我猜你真正想做的事情是这样的:

app.factory('AuthenticationService', ['$http', function($http) {
    var AuthenticationService = function() {};

    AuthenticationService.prototype.config = function)() { ... }

    return new AuthenticationService();
}]);

这会创建一个可以注入到其他控制器,指令和服务中的服务,这些服务只会是一个共享实例。通过字符串获取服务意味着函数内部的引用是闭包的本地引用,这意味着可以安全地重命名变量,从而节省了宝贵的带宽。