请注意,不重复:How to inject module and make it accesible to entrie angular app
我有一个模块(app.config
),我想将其注入整个应用程序。
模块需要在注入myApp
例如,我的应用程序如下所示:
angular.module('myApp', [
'app.config',
'module#1',
'module#2',
'module#3',
'module#4'
])
.config...
/////////////////////////////////
此处为app.config
angular.module('app.config', []).
constant('NAME1', 'Name1').
constant('NAME2', 'Name2');
////////////////////
我希望'app.config'
以module#500
方式访问'myApp'
,这不是module#1
的直接依赖,而是myApp
的依赖 - 反过来,是module#1
的依赖。
module#500
定义如此(如图所示,module#1
是 angular.module('module#1', [
'module#500',
'module#501',
'module#502',
...
]);
的依赖):
angular.module('module#500', []).
service('serviceOne', serviceOne);
function ServiceOne($http, NAME1) {
var service = {
getMyProfile: function(){return $http.get('api/' + NAME1);}
};
return service;
}
这是我的问题:
Uncaught Error: [$injector:unpr] Unknown provider: NAME1Provider <-NAME1 <- serviceOne
问题 - 我收到错误 - &gt; module#500
但我以为我把它注入整个应用程序???
我不想直接添加'myApp'
作为module#500
的依赖我不想将module#1
作为{{1}的依赖关系}。我想将module#1
作为myApp
我不想单独向每个模块注入app.config
。任何其他解决方案?
答案 0 :(得分:2)
我不想单独为每个人注入app.config 模块要么。还有其他解决方案吗?
我不知道你可以期待什么解决方案?使用这一行:angular.module('module#500', []).
模块#500如何知道其他任何事情,它没有给予任何东西。也许我在这里误解了一些东西。
编辑,因为我刚刚阅读了你昨天的帖子和评论:我认为你不能正确理解依赖注入。它只采用一种方式,模块#1可以访问模块#500,但模块#500无法访问模块#1。它必须是这样的:如果它有一些依赖于模块#1的行为,你怎么能对模块#500进行单元测试呢?在模块的任何地方都没有提到它?
我猜测你的项目并没有真正需要这么多模块,如果它们都依赖于相同的配置变量。依赖于配置变量的那些工厂和服务应该与它在同一个模块中。这是适当的划分,从长远来看会让你的生活更轻松。
答案 1 :(得分:1)
如果您不想让myApp
依赖于app.config
(尽管这样做是正确的,因为它的子模块 依赖 < / strong>就可以了,您可以使用手动引导加载配置模块
angular.bootstrap(document, ['myApp', 'app.config']);
而不是ng-app="myApp"
。
答案 2 :(得分:0)
您忘记在NAME1
服务中注入ServiceOne
。
例如:function ServiceOne($http, NAME1)