AngularJS 模块

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

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

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

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


创建一个模块

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

  1. <div ng-app="myApp">...</div>
  2. <script>
  3. var app = angular.module("myApp", []);
  4. </script>

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

现在,您可以向 AngularJS 应用程序添加控制器、指令、过滤器等。


添加一个控制器

将控制器添加到应用程序中,并使用 ng-controller 指令引用该控制器:

  1. <!DOCTYPE html>
  2. <html>
  3. <script src="https://cdn.bootcdn.net/ajax/libs/angular.js/1.8.2/angular.min.js"></script>
  4. <body>
  5. <div ng-app="myApp" ng-controller="myCtrl">
  6. {{ firstName + " " + lastName }}
  7. </div>
  8. <script>
  9. var app = angular.module("myApp", []);
  10. app.controller("myCtrl", function($scope) {
  11. $scope.firstName = "John";
  12. $scope.lastName = "Doe";
  13. });
  14. </script>
  15. </body>
  16. </html>

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


添加一个指令

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

有关完整参考,请访问本站的 AngularJS 指令参考

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

  1. <!DOCTYPE html>
  2. <html>
  3. <script src="https://cdn.bootcdn.net/ajax/libs/angular.js/1.8.2/angular.min.js"></script>
  4. <body>
  5. <div ng-app="myApp" test-directive=""></div>
  6. <script>
  7. var app = angular.module("myApp", []);
  8. app.directive("TestDirective", function() {
  9. return {
  10. template : "我是在指令构造器中生成的!"
  11. };
  12. });
  13. </script>
  14. </body>
  15. </html>

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


文件中的模块与控制器

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

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

实例
  1. <!DOCTYPE html>
  2. <html>
  3. <script src="https://cdn.bootcdn.net/ajax/libs/angular.js/1.8.2/angular.min.js"></script>
  4. <body>
  5. <div ng-app="myApp" ng-controller="myCtrl">
  6. {{ firstName + " " + lastName }}
  7. </div>
  8. <script src="myApp.js"></script>
  9. <script src="myCtrl.js"></script>
  10. </body>
  11. </html>
myApp.js
  1. var app = angular.module(<strong>"myApp"</strong>, []);

模块定义中的 [] 参数可用于定义从属模块。

如果没有 [] 参数,就不会创建新模块,而是检索现有模块。

myCtrl.js
  1. app.controller(<strong>"myCtrl"</strong>, function($scope) {
  2. $scope.firstName = "John";
  3. $scope.lastName= "Doe";
  4. });

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

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

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


何时加载库

虽然在 HTML 应用程序中,将脚本放在 <body> 元素的末尾很常见,但建议您在 <head> 或 <body> 的开头加载 AngularJS 库。

这是因为调用了 AngularJS。模块只能在加载库后编译。

实例
  1. <!DOCTYPE html>
  2. <html>
  3. <body>
  4. <script src="https://cdn.bootcdn.net/ajax/libs/angular.js/1.8.2/angular.min.js"></script>
  5. <div ng-app="myApp" ng-controller="myCtrl">
  6. {{ firstName + " " + lastName }}
  7. </div>
  8. <script>
  9. var app = angular.module("myApp", []);
  10. app.controller("myCtrl", function($scope) {
  11. $scope.firstName = "John";
  12. $scope.lastName = "Doe";
  13. });
  14. </script>
  15. <p>建议您在 head 或 body 开始处加载 AngularJS 库。</p>
  16. </body>
  17. </html>

分类导航