0

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

     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 被设置为未定义。我究竟做错了什么?将 $http 服务注入自定义提供程序的正确方法是什么?

谢谢

4

1 回答 1

4

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

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

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

    return new AuthenticationService();
}]);

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

于 2015-03-15T02:13:20.577 回答