我在app.js中得到了这个:
angular.module('App',[]).config(['TranslationProvider', function (TranslationProvider) {
//codes...
}]);
此服务在另一个文件中:
angular.module('App')
.provider('Translation', function() {
var translations = {foo:"bar"}
this.$get = function(){
return translations;
};
});
服务js文件没有404错误,但是当角度注入器尝试实例化时,它会给我这个错误:
Uncaught Error: [$injector:modulerr] Failed to instantiate module App due to:
Error: [$injector:unpr] Unknown provider: TranslationProvider
我已经关注了angjs文档https://docs.angularjs.org/guide/providers
答案 0 :(得分:1)
这似乎是Angular 1.2.x中的一个错误。通话的顺序很重要。当您在provide
之前致电config
时,它会正常工作。无论顺序如何,它也适用于Angular 1.3.x.
答案 1 :(得分:-1)
你快到了。
首先是配置:
angular.module('App')
.config(["TranslationProvider", function(theProvider) {
console.log("in config" + theProvider)
theProvider.setName("some name");
}]);
您遇到的错误是由于您使用构造函数作为参数。
现在是您的提供者:
angular.module('App')
.provider('Translation', function TranslationProvider() {
var translations = {foo:"bar", name:""};
var dynamicName;
this.setName = function(configName) {
dynamicName = configName;
};
this.$get = function(){
translations.name = dynamicName;
return translations;
};
});
另请注意,也可以使用匿名函数(即.provider('Translation', function () {
),代码也可以正常工作。
在控制器中全部使用它:
angular.module('App')
.controller('MyController', [
'$scope',
'Translation',
function ($scope,
translationProvider) {
$scope.modal = {};
$scope.projects = [];
console.log(translationProvider)
$scope.foo = translationProvider;
}]);