AngularJS进阶(三十九)基于项目实战解析ng启动加载过程

本文详细解析了AngularJS项目的启动过程,从加载库到模型、控制器的登场,包括三种启动方式:自动启动、手动启动及多ng-app启动,并附带代码示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

分享一下我老师大神的人工智能教程!http://blog.youkuaiyun.com/jiangjunshow

也欢迎大家转载本篇文章。分享知识,造福人民,实现我们中华民族伟大复兴!

基于项目实战解析ng启动加载过程

前言

      在AngularJS项目开发过程中,自己将遇到的问题进行了整理。回过头来总结一下angular的启动过程。

      下面以实际项目为例进行简要讲解。

1.载入ng库

 

2.等待,直到DOM树构造完毕。

3.发现ng-app,自动进入启动引导阶段。

4.根据ng-app名称找到相应的路由。

 

5.加载默认地址。

6.Js顺序执行,加载相应模版页

sys_tpls/home.html

 

7.在此,可以看到index路由中只是填充了ui-view为sys_login的div模块,填充页面内容为sys_tpls/sys_login.html。

sys_tpls/sys_login.html

 

      至此,模型、控制器依次登场亮相。可见,此页面关联的控制器为LoginController。其中用户ID、密码均进行了ng-model的绑定。

 

      至此angularJS项目的启动全过程大致讲解完毕。

注:AngularJS的三种启动方式

方式1: 自动启动

Angular会自动的找到ng-app,将它作为启动点,自动启动。


  
  1. <!DOCTYPE html>
  2. <html ng-app="myModule">
  3. <head>
  4. <title>New Page </title>
  5. <meta charset="utf-8" />
  6. <script type="text/javascript" src="../../vendor/bower_components/angular/angular.min.js"> </script>
  7. <script type="text/javascript" src="./02.boot1.js"> </script>
  8. </head>
  9. <body>
  10. <div ng-controller="MyCtrl">
  11. <span> </span>
  12. </div>
  13. </body>
  14. </html>

JS


  
  1. var myModule = angular.module( "myModule", []);
  2. myModule.controller( 'MyCtrl', [ '$scope',
  3. function($scope) {
  4. $scope.Name = "Puppet";
  5. }
  6. ]);

方式2: 手动启动

在没有ng-app的情况下,只需要在js中添加一段注册代码即可


  
  1. <body>
  2. <div ng-controller="MyCtrl">
  3. <span> </span>
  4. </div>
  5. </body>

JS


  
  1. var myModule = angular.module( "myModule", []);
  2. myModule.controller( 'MyCtrl', [ '$scope',
  3. function($scope) {
  4. $scope.Name = "Puppet";
  5. }
  6. ]);
  7. /**
  8. * 这里要用ready函数等待文档初始化完成
  9. */
  10. angular.element( document).ready( function() {
  11. angular.bootstrap( document, [ 'myModule']);
  12. });

方式3:多个ng-app

      ng中,angular的ng-app是无法嵌套使用的,在不嵌套的情况下有多个ng-app,他默认只会启动第一个ng-app,第二个第三个需要手动启动(注意,不要手动启动第一个,虽然可以运行,但会抛异常)


  
  1. <body>
  2. <div id="app1" ng-app="myModule1">
  3. <div ng-controller="MyCtrl">
  4. <span> </span>
  5. </div>
  6. </div>
  7. <div id="app2" ng-app="myModule2">
  8. <div ng-controller="MyCtrl">
  9. <span> </span>
  10. </div>
  11. </div>
  12. </body>

JS


  
  1. /**
  2. * 第一个APP
  3. * @type {[type]}
  4. */
  5. var myModule1 = angular.module( "myModule1", []);
  6. myModule1.controller( 'MyCtrl', [ '$scope',
  7. function($scope) {
  8. $scope.Name = "Puppet";
  9. }
  10. ]);
  11. // angular.element(document).ready(function() {
  12. // angular.bootstrap(app1, ['MyModule1']);
  13. // });
  14. /**
  15. * 第二个APP
  16. * @type {[type]}
  17. */
  18. var myModule2 = angular.module( "myModule2", []);
  19. myModule2.controller( 'MyCtrl', [ '$scope',
  20. function($scope) {
  21. $scope.Name = "Vincent";
  22. }
  23. ]);
  24. angular.element( document).ready( function() {
  25. angular.bootstrap(app2, [ 'myModule2']);
  26. });

美文美图

 


这里写图片描述

给我老师的人工智能教程打call!http://blog.youkuaiyun.com/jiangjunshow

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值