无法从angular config

时间:2016-08-02 07:56:30

标签: javascript angularjs

我是棱角分明的新人,所以我很确定这是一个愚蠢的问题,但我自己也没想到这一点。 我有一个应用程序,我有提供程序使用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 }    
  };
});

2 个答案:

答案 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.decoratengCookies,则无法正常工作。