AngularJS 模块


AngularJS 模块定义了一个应用程序。

该模块是应用程序不同部分的容器。

该模块是应用程序控制器的容器。

控制器始终属于一个模块。


创建模块

使用 AngularJS 函数创建模块angular.module

<div ng-app="myApp">...</div>

<script>

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

</script>

"myApp" 参数指的是应用程序将在其中运行的 HTML 元素。

现在您可以将控制器、指令、过滤器等添加到您的 AngularJS 应用程序中。


添加控制器

将控制器添加到您的应用程序中,并使用以下命令引用该控制器ng-controller指示:

示例

<div ng-app=" myApp" ng-controller= "myCtrl">
{{ firstName + " " + lastName }}
</div>

<script>

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

app.controller( "myCtrl", function($scope) {
  $scope.firstName = "John";
  $scope.lastName = "Doe";
});

</script>
亲自试一试 »

您将在本教程后面了解有关控制器的更多信息。



添加指令

AngularJS 有一组内置指令,您可以使用它们向应用程序添加功能。

如需完整参考,请访问我们的AngularJS 指令参考

此外,您可以使用该模块将您自己的指令添加到您的应用程序中:

示例

<div ng-app="myApp" w3-test-directive></div>

<script>
var app = angular.module("myApp", []);

app.directive("w3TestDirective", function() {
  return {
    template : "I was made in a directive constructor!"
  };
});
</script>
亲自试一试 »

您将在本教程后面了解有关指令的更多信息。


文件中的模块和控制器

在 AngularJS 应用程序中,将模块和控制器放在 JavaScript 文件中是很常见的。

在此示例中,"myApp.js" 包含应用程序模块定义,而 "myCtrl.js" 包含控制器:

示例

<!DOCTYPE html>
<html>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.6.9/angular.min.js"></script>
<body>

<div ng-app=" myApp" ng-controller=" myCtrl">
{{ firstName + " " + lastName }}
</div>

<script src=" myApp.js"></script>
<script src=" myCtrl.js"></script>

</body>
</html>
亲自试一试 »

myApp.js

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

模块定义中的[]参数可用于定义依赖模块。

如果没有 [] 参数,你就不能创造一个新模块,但是检索现有的。

myCtrl.js

app.controller( "myCtrl", function($scope) {
  $scope.firstName = "John";
  $scope.lastName= "Doe";
});

函数可能会污染全局命名空间

JavaScript 中应避免使用全局函数。它们很容易被其他脚本覆盖或破坏。

AngularJS 模块通过将所有函数保留在模块本地来减少这个问题。


何时加载库

虽然在 HTML 应用程序中将脚本放在末尾是很常见的<body>元素,建议您在以下位置加载 AngularJS 库:<head>或在开始时<body>

这是因为调用angular.module只能在库加载后进行编译。

示例

<!DOCTYPE html>
<html>
<body>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.6.9/angular.min.js"></script>

<div ng-app="myApp" ng-controller="myCtrl">
{{ firstName + " " + lastName }}
</div>

<script>
var app = angular.module("myApp", []);
app.controller("myCtrl", function($scope) {
  $scope.firstName = "John";
  $scope.lastName = "Doe";
});
</script>

</body>
</html>
亲自试一试 »