2016-08-02 48 views
0

我是新來角度的,所以我很確定這是一個愚蠢的問題,但我沒有弄清楚自己。 我有一個應用程序,我有提供程序從cookie使用ngCookies獲取令牌,我需要從app.config中訪問它。我嘗試了幾種方法,但我能得到的只是服務代碼,而不是返回的變量。我究竟做錯了什麼?無法訪問angular angular provider中的角度提供者的變量

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

你會得到一個錯誤,說不能注入getTokenProvider? –

+0

不,getTokenProvider注入得很好。 –

+0

爲什麼你需要有一個令牌getToken提供程序對不起? 你已經可以在你的配置中使用'var token = $ cookie.get('token')' – kiro112

回答

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

UPDATE:

使用這個時候有任何代碼改變用於實例化「爲gettoken」依賴服務提供商可能會引起問題。例如,如果在此配置塊之後您有module.decoratengCookies,則它將無法工作。

+0

這實際上正是我所需要的,但由於某種原因,在使用$ injectorProvider(未知提供程序)時出現錯誤:[$ injector:modulerr],儘管我基本上運行一切都完全像這樣。任何想法爲什麼? @MMhunter –

+0

其實我有這個錯誤,即使我從plunker複製粘貼代碼,這是奇怪的 –

+0

嗯,我只是做一個檢查。上述代碼僅適用於角度1.5.x.舊版本沒有公開$注入器服務 – MMhunter

0
return { 
    token: token 
}; 

加入這一行中提供return語句,並使用

getTokenProvider.token 

在控制器

+0

在配置中不起作用(getTokenProvider.token未定義) –

相關問題