我正在尝试创建一个提供程序来处理我的应用程序中的身份验证
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服务注入自定义提供程序的正确方法是什么?
谢谢
答案 0 :(得分:4)
我猜你真正想做的事情是这样的:
app.factory('AuthenticationService', ['$http', function($http) {
var AuthenticationService = function() {};
AuthenticationService.prototype.config = function)() { ... }
return new AuthenticationService();
}]);
这会创建一个可以注入到其他控制器,指令和服务中的服务,这些服务只会是一个共享实例。通过字符串获取服务意味着函数内部的引用是闭包的本地引用,这意味着可以安全地重命名变量,从而节省了宝贵的带宽。