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>
元素的末尾,但建议您在 <head>
中或 <body>
的开头加载 AngularJS 库。
这是因为只有在加载库后才能编译对 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>
自己尝试 »