AngularJS 怎么可能识别模块的名称?

How is possible for AngularJS to recognise the name of a module?

我目前正在学习AngularJS,但我有点困惑。这是关于通过 ng-controller 将控制器分配给视图的非常非常基本的练习。我的网络应用程序包含两个文件(index.html 和 js.js):

index.html:

<html>
<head>
</head>

<body ng-app="simpleApp">
    <h1>Welcome to my website!</h1>

    <div ng-controller="mainController">
        <h2>This is my personal website :)</h2>
    </div>

    <script src="lib/angular.js"></script>
    <script src="js.js"></script>
</body>
</html>

js.js:

var myApp = angular.module("simpleApp", []);

myApp.controller("mainController", function() {
    console.log("It controller really works!!");
});

在我看到的大多数 angular 示例中,angular 模块的全局范围变量具有相同的名称。但是我使用不同的(myApp 作为变量,simpleApp 作为模块的名称)我对代码有点奇怪,因为我分配了 mainController,它是 AngularJS 通过 myApp 变量或通过 simpleApp 模块检测它?如果 ng-app=myApp 为什么它不起作用?

谢谢。

语法 angular.module('name', []); 创建并 returns 一个新模块。注意 [] 定义了一个空的模块依赖集合。这很重要,因为当你创建一个模块时,你需要这个。

但是,您可以使用类似的语法将控制器添加到模块:

angular.module('name').controller(...

这通常是首选,因为它不会污染全局范围,而且一旦您开始跨物理文件拆分模块就更有意义。

现在回答你的问题。您的模块名称 simpleAppalways 您将用来指代新创建的模块的名称。 myApp 仅包含对具有该名称的模块的引用。

因此,Angular 使用的名称将始终是 simpleApp。您将在 ng-app 中使用该名称(就像您所做的那样),以及可能需要模块名称的其他任何地方。例如,如果您将模块添加为另一个模块的依赖项,它看起来像:

angular.module('anotherModule', ['simpleApp']);

detecting it via myApp variable or via simpleApp module

Angular 正在通过名称 simpleApp.

进行检测