我有一个主模块main
其中包含一个服务mainService
。然后我注入了另一个模块moduleA
在我的主模块中。我随机打电话mainService
in moduleA
无需注射main
模块并惊讶地发现它工作正常。
angular.module('main', ['moduleA']);
angular.module('main').service('mainService', function(){
//insert code here
});
angular.module('moduleA', []);
angular.module('moduleA').controller('abc', function(mainService){
//mainService available here, without injecting main module
});
我想知道这背后的原因。我曾经在评论中读到,模块中定义的服务在应用程序中的任何地方都可用,但找不到来源。这样继续使用可以吗?
我在用着AngularJS ver 1.3.15
如果有帮助的话。
是的,由于父子关系,您可以使用 main 的服务。 “main”是父模块,“moduleA”是其子/依赖模块。
“main”模块中定义的任何服务、控制器、指令都可用于“moduleS”
让我们用一个更复杂的场景来理解这个概念
angular.module('main', ['moduleA', 'moduleB']);
angular.module('moduleA', []);
angular.module('moduleA').service('moduleAService', function(){
//insert code here
});
angular.module('moduleB', []);
angular.module('moduleB').controller('abc', function(moduleAService){
//moduleAService available here, without injecting moduleA module
});
现在在这种情况下 moduleS 和 moduleS 是完全独立的,但 module 仍然可以访问 moduleS 服务
这是因为 main 模块依赖于 moduleA 和 moduleB。因此 moduleA 服务被注入到主模块中,而 moduleB 作为“主”模块的子模块可以访问它。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)