[英]Can I inject provider into factory?
我想創建一個httpRequestInterceptor在應用程序的.config中使用。
$httpProvider.interceptors.push('httpRequestInterceptor');
我有此提供程序和RequestInterceptor的工廠:
angular.module('app.services', [])
.provider('appProvider', [function () {
var apiUrl = "http://url/api";
var _authToken = null;
var _currentUser = null;
this.$get = function($q, $http, $cookieStore) {
var service = {
getAuthToken: function() {
return _authToken ?
$cookieStore.get('authToken') ?
(_authToken = $cookieStore.get('authToken'), _authToken) :
'' : _authToken;
}
};
return service
}
}])
.factory('httpRequestInterceptor', [function () {
return {
request: function(config) {
config.headers = {'auth-toke': appProvider.getAuthToken()}
return config;
}
};
}]);
我收到錯誤消息:無法讀取未定義的屬性'getAuthToken'
如何解決這個問題?
注入appProvider:
.factory('httpRequestInterceptor', ['appProvider', function (appProvider) {
return {
request: function(config) {
config.headers = {'auth-toke': appProvider.getAuthToken()}
return config;
}
};
}]);
添加$ injector並使用它
.factory('httpRequestInterceptor', function ($injector) {
return {
request: function(config) {
config.headers = {'auth-toke': $injector.get('appProvider').getAuthToken()}
return config;
}
};
}]);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.