AngularJs-将子模块注入其他子模块

Ali*_*aig 0 angularjs angularjs-scope angular-services angular-controller angular-module

我有一个听起来可能很愚蠢的场景,但是我被困住了,试图理解是什么导致了它不起作用。

我有一个现在有三个模块的角度应用程序

var app = angular.module('mainApp', ['ngRoute']); //parent module
var reviewModule = angular.module('reviewModule', ['mainApp']);  //child 1
var searchmodule = angular.module('searchmodule', ['mainApp']);  //child 2
Run Code Online (Sandbox Code Playgroud)

我已经在我的父模块(即mainApp)中设置了一些配置和默认字符串,我希望在其所有子模块中使用它。

另一方面,我的reviewModule和searchmodule(子模块)具有单独的控制器和服务,这些控制器和服务在不同的路线上使用。现在,问题来了,当我想将一个模块的服务用于另一个模块时,例如,如果我执行以下操作

var searchmodule = angular.module('searchmodule', ['mainApp', 'reviewModule']);
Run Code Online (Sandbox Code Playgroud)

在我的搜索模块控制器中使用reviewModule服务时,出现一个异常提示

Error: $injector:modulerr Module Error
Failed to instantiate module searchmodule
Run Code Online (Sandbox Code Playgroud)

两个子模块都具有相同的父模块,我想将一个子模块用于另一个子模块,并且不明白为什么会收到此异常。

更新:

我什至尝试使用以下行进行模块声明

var searchmodule = angular.module('searchmodule', ['reviewModule']);
Run Code Online (Sandbox Code Playgroud)

但这也会引起异常。

cha*_*tfl 5

这是向后的....添加辅助模块作为主模块的依赖项

angular.module('reviewModule', []);  
angular.module('searchmodule', []);  

angular.module('mainApp', ['ngRoute','reviewModule', 'searchmodule']); //parent module
Run Code Online (Sandbox Code Playgroud)

现在,所有模块的所有组件都可以在应用程序中的任何位置使用

或者,您可以让一个孩子加载另一个作为依赖项,但最终结果是它们都需要绑定到引导的主应用程序模块上

例:

angular.module('reviewModule', []);  
angular.module('searchmodule', []);  
// module just to combine other modules
angular.module('myChildModules',['reviewModule', 'searchmodule']);
// add combined modules as dependency of main app module
angular.module('mainApp', ['ngRoute','myChildModules']);
Run Code Online (Sandbox Code Playgroud)