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 = "Bill"; $scope.lastName = "Gates"; }); </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://cdn.staticfile.net/angular.js/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 = "Bill"; $scope.lastName= "Gates"; });
函数可能会污染全局命名空间
在 JavaScript 中应避免使用全局函数。 它们很容易被其他脚本覆盖或破坏。
AngularJS 模块通过将所有函数保留在模块本地来减少这个问题。
何时加载库
虽然在 HTML 应用程序中将脚本放置在 <body>
元素的末尾很常见,但建议您在 <head>
或 <body>
的开头加载 AngularJS 库。
这是因为只有在加载库后才能编译对 angular.module
的调用。
实例
<!DOCTYPE html> <html> <body> <script src="https://cdn.staticfile.net/angular.js/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 = "Bill"; $scope.lastName = "Gates"; }); </script> </body> </html>