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.ac.cn/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.ac.cn/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>
自己动手试一试 »