[英]AngularJS error: Unknown provider: app.configProvider <- app.config
[英]Angularjs Provider $get method error at config()
我剛剛設置了一個簡單的Provider,它將從Web服務器檢索語言json文件,並通過config()方法將其提供給Angular。
所以我做了提供者:
.provider('language', function () {
var languageWsURL
, languageCode
, languageAppName;
return {
'setLanguageWsURL' : function (url) {
languageWsURL = url;
},
'setLanguageAppName' : function (name) {
languageAppName = name;
},
'setLanguageCode' : function (code) {
languageCode = code;
},
'$get': ['$rootScope', '$window', '$http', function ($rootScope, $window, $http) {
var loadLanguage = function () {
if (languageWsURL && languageCode && languageAppName) {
$http({
'method':'GET',
'url': languageWsURL,
'params': {
'application':languageAppName,
'langCode':languageCode
}
}).success(function (data) {
if (data.data && data.data.length > 0) {
$rootScope.lang = data.data;
}
}).error(function (err) {
$window.console.log('Error while retrieving app lang - languageProvider : ' + err);
});
} else {
$window.console.error('Missing params to load language in languageProvider');
}
};
return {
'loadLanguage':loadLanguage
};
}]
};
});
我在index.js中創建了一個小config()
.config(['languageProvider', function (languageProvider) {
languageProvider.setLanguageWsURL('http://localhost:3000');
languageProvider.setLanguageAppName('antani');
languageProvider.setLanguageCode('en');
languageProvider.loadLanguage(); //error here
}]);
問題在於它無法正常工作,languageProvider.loadLanguage()在控制台中引發了一個很難理解的錯誤:
http://errors.angularjs.org/1.2.23/$injector/modulerr?p0=app&p1=TypeError%3A%20undefined%20is%20not%20a%20function%0A%20%20%20%20at%20http%3A%2F%2Flocalhost%3A8000%2Fassets%2Fjs%2Findex.js%3A15%3A21%0A%20%20%2
有什么線索嗎?
$get
對象用於創建實際的服務。 在配置階段不可用。
如果要在配置階段調用loadLanguage函數,請在$ get實現之外定義它。
languageProvider
沒有方法loadLanguage
, language
有。 由於您無法向config()
注入服務,因此您的代碼應如下所示:
.config(['languageProvider', function (languageProvider) {
languageProvider.setLanguageWsURL('http://localhost:3000');
languageProvider.setLanguageAppName('antani');
languageProvider.setLanguageCode('en');
}])
.run(['language',function(language){
language.loadLanguage();
}]);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.