我编写了一个使用角度模块的程序。 我创建了一个模块如下:
// 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>
答案 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了解更多信息。