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

问题描述 投票:0回答:1

我有一个可能听起来很愚蠢的场景,但我陷入困境并试图理解可能导致它不起作用的原因。

我有一个 Angular 应用程序,目前包含三个模块

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

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

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

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

要在我的搜索模块控制器中使用 reviewModule 服务,我收到一个异常:

Error: $injector:modulerr Module Error
Failed to instantiate module searchmodule

两个子模块具有相同的父模块,我想将一个子模块使用到另一个子模块中,并且无法理解为什么我会收到此异常。

更新:

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

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

但这也会导致异常。

angularjs angularjs-scope angularjs-service angularjs-controller angularjs-module
1个回答
5
投票

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

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

angular.module('mainApp', ['ngRoute','reviewModule', 'searchmodule']); //parent module

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

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

示例:

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']);
© www.soinside.com 2019 - 2024. All rights reserved.