为什么检索到的模块名称应该与angular.module中第一个参数中传递的模块名称相同

时间:2014-03-07 14:09:17

标签: angularjs module

我编写了一个使用角度模块的程序。 我创建了一个模块如下:

// Module A
var modA = angular.module("moduleA",[]);
//Controller A
modA.controller("AController", function($scope, $rootScope, $log){
    $log.info("In controller A");
    $scope.message = "I am in controller A";
});

创建了另一个模块和控制器。

使用上面创建的模块创建一个新的角度模块:

var myApp = angular.module("mainModule",["modA","moduleB"]);

但是当我运行代码时,我收到以下错误: 未捕获错误:无模块:modA

但是当我将重新获取的模块名称“modA”更改为“moduleA”时,它在模块中作为第一个参数传递,同时创建它。我可以知道原因/解释为什么会这样吗?

完整代码如下:

<!DOCTYPE HTML>
<html ng-app="mainModule">
<head>
<script type="text/javascript" src="../js/angular.js"></script>
<script text="text/javascript">

// Module A
var modA = angular.module("moduleA",[]); 
//Controller A
modA.controller("AController", function($scope, $rootScope, $log){
    $log.info("In controller A");
    $scope.message = "I am in controller A";
});

// Module B
var moduleB = angular.module("moduleB",[]);
// Controller B
moduleB.controller("BController", function($scope, $rootScope, $log){
    $log.info("In controller B");
    $scope.message = "I am in controller B";
});

var myApp = angular.module("mainModule",["modA","moduleB"]);
</script>
</head>
<body>
<div ng-controller="AController">
<span>{{message}}</span>
</div>

<div ng-controller="BController">
<span>{{message}}</span>
</div>
</body>
</html>

2 个答案:

答案 0 :(得分:0)

Angular的错误是在依赖注入期间。进样器使用您指定的模块/组件名称:

var modA = angular.module("moduleA",[]);

在这种情况下,您告诉它创建一个名为“moduleA”的模块,其中包含无其他模块的依赖项。它不关心你命名变量的是什么,它只是用你给出的名字来注册它。实际上,您甚至不需要存储返回值,因为您可以链接它或检索它

angular.module('moduleA').controller('MyOtherCtrl', function()...);

在没有第二个参数的情况下调用angular.module(name)时,它会按名称检索模块,因此您也可以通过这种方式添加组件。

答案 1 :(得分:0)

模块是配置和运行块的集合,它们在引导过程中应用于应用程序。

模块可以将其他模块列为其依赖项。 取决于模块意味着需要在加载需求模块之前加载所需的模块。

在你的情况下,你正在注射&#34; modA&#34;

var myApp = angular.module("mainModule",["modA","moduleB"]);
因此无法加载的

因此无法加载。 由于它在&#34;依赖注入&#34;。

期间抛出错误

这是在VM执行模块的异步加载机制期间发生的,因为模块在加载时不执行任何操作,它们可以按任何顺序加载到VM中,因此脚本加载器可以利用此属性并并行化加载过程。 / p>

您可以参考link了解更多信息。