我是棱角分明的新人,所以我很确定这是一个愚蠢的问题,但我自己也没想到这一点。 我有一个应用程序,我有提供程序使用ngCookies从cookie获取令牌,我需要从app.config内部访问它。我尝试了几种方法,但我能得到的只是服务代码,而不是返回的变量。我做错了什么?
var app = angular.module('appClient', [
'ngCookies'
]);
app.provider('getToken', function getTokenProvider() {
this.$get = ['getTokenService', function(getTokenService, $cookies) {
var token = $cookies.get('token');
return token;
}]
});
app.config(function ($resourceProvider, $httpProvider, getTokenProvider) {
var token = ? //need to get token from getTokenProvider here
$httpProvider.defaults.withCredentials = false;
$resourceProvider.defaults.actions = {
save: { method: 'POST', params: { token: token } },
get: { params: { token: token } },
query: { params: { token: token }, isArray: true }
};
});
答案 0 :(得分:0)
return {
token: token
};
将此行添加到提供程序中的return语句并使用
getTokenProvider.token
控制器中的
答案 1 :(得分:0)
根据您的代码获取棘手的解决方案。有人告诉我这是否有任何副作用或缺点。
app.provider('getToken', function getTokenProvider() {
this.$get = ['$cookies', function($cookies) {
//$cookies.put("token","test");
var token = $cookies.get('token');
return token;
}]
});
app.config(function (getTokenProvider,$injectorProvider) {
//instantiate or get the service here
//this should be how angular gets services
//$injectorProvider.$get returns the instance injector (the $injector service)
var token = $injectorProvider.$get().get("getToken");
console.log(token);
});
以下是plunker
更新:
当有任何代码更改用于实例化' getToken'的依赖服务的提供者时,使用此功能可能会导致问题。例如,如果在此配置块之后module.decorate
为ngCookies
,则无法正常工作。