AngularJS学习笔记2——AngularJS的初始化
本文主要介绍AngularJS的自动初始化以及在必要的适合如何手动初始化。
Angular <script> Tag
下面通过一小段代码来介绍推荐的自动初始化过程:
<!doctype html>
<html xmlns:ng="http://angularjs.org" ng-app>
<body>
...
<script src="angular.js">
</body>
</html>
- 把script标签放在页面的底部可以缩短应用加载的时间,因为这样的话Html的加载不会被angular.js脚本的加载阻塞。
- angular-[version].js是具有可读性的版本,适用于开发和调试。
- angular-[version].min.js是压缩和混淆后的版本,适用于产品代码。
- 如果你想让angular自动初始化的话,可以在<html>标签中加上ng-app
<html ng-app>
…
</html> - 如果要支持IE7的话需要加上id="ng-app"
<html id="ng-app" ng-app>
…
</html> - 如果要使用旧版的指令语法(ng:)的话,要支持IE还需要在<html>标签中引入xml的命名空间(因为一些历史原因,现在已经不推荐使用ng:的语法了)
<html xmlns:ng="http://angularjs.org">
…
</html>
自动初始化(Automatic Initialization)
在DOMContentLoaded事件触发时Angular会执行自动初始化过程。这时,Angular会查找ng-app指令,并用它来标明整个应用的根作用域。如果找到了ng-app指令,Angular会做一下几件事:
- 加载和指令(directive)内容相关的模块(module)
- 创建一个应用“注入器”(injector)
- 将含有ng-app指令的节点作为根节点来编译DOM。这样一来,你可以只指定一部分DOM作为Angular应用。
手动初始化(Manual Initialization)
如果你想更多的来控制初始化的过程,你可以手动的执行引导程序。比如你需要用到脚本加载器(script loader)或者要在Angular编译页面之前加入一些操作的话,你就需要手动的调用Angular的初始化方法了。例如:
<!doctype html>
<html xmlns:ng="http://angularjs.org”>
<body>
Hello{{'World'}}!
<script src="http://code.angularjs.org/angular.js"></script>
<script>
angular.element(document).ready(function(){
angular.module('myApp',[]);
angular.bootstrap(document,['myApp']);
});
</script>
</body>
</html>
注意:angular.bootstrap函数签名如下:
| 参数 | 类型 | 说明 |
| element | Element | 作为Angular应用根作用域的DOM元素 |
| modules (optional) |
Array<String|Function|Array> | 数组中为所有需要加载的模块的的名称,每个模块的名字需要在此之前定义,Angular不会在运行到这里时自己去定义模块。 |
如果手动调用初始化函数的话,代码的书写需要遵循以下顺序:
- 等到页面加载完成后,找到AngularJS的根元素(通常是文档的根元素)。
- 调用angular.bootstrap函数将模板编译成可以执行的、数据双向绑定的应用程序。
延迟引导(Deferred Bootstrap)
这个特性使得像Batarang这样的工具和一些test runner能够在Angular的引导过程中建立钩子,在注册需要注入的依赖的时候可以增加或者替换注入的service,或者mock一些比较重的依赖。当angular.bootstrap被调用时如果window.name中包含前缀NG_DEFER_BOOTSTRAP!,引导过程将会被暂停直到angular.resumeBootstrap()被调用。angular.resumeBootstrap()可以传入一个可选的模块数组作为参数,这个数组中的模块会被加到引导函数的模块数组中一起被初始化。
=============Angular JS学习笔记系列=============
- AngularJS学习笔记1——什么是AngularJS?
- AngularJS学习笔记2——AngularJS的初始化
=========================================
AngularJS学习笔记2——AngularJS的初始化的更多相关文章
- AngularJS学习笔记二:AngularJS指令
AngularJS 指令: AngularJS 通过被称为 指令 的新属性来扩展 HTML. AngularJS 指令是扩展的 HTML 属性,带有前缀 ng-. 几个常用 指令: ng-app 指令 ...
- 【AngularJS学习笔记】AngularJS表单验证
AngularJS表单验证 AngularJS提供了一些自带的验证属性 1.novalidate:添加到HTML的表单属性中,用于禁用浏览器默认的验证. 2.$dirty 表单有填写记录 3.$v ...
- AngularJS学习笔记(1) - AngularJS入门
什么是AngularJS? AngularJS是建立在jQuery的一个轻量级版本之上的MVC框架.MVC将业务逻辑代码和视图.模型相分离.AngularJS提供的所有功能都可以通过使用JavaScr ...
- AngularJS学习笔记3——AngularJS的工作原理
个人觉得,要很好的理解AngularJS的运行机制,才能尽可能避免掉到坑里面去.在这篇文章中,我将根据网上的资料和自己的理解对AngularJS的在启动后,每一步都做了些什么,做一个比较清楚详细的解析 ...
- AngularJs学习笔记--directive
原版地址:http://code.angularjs.org/1.0.2/docs/guide/directive Directive是教HTML玩一些新把戏的途径.在DOM编译期间,directiv ...
- AngularJs学习笔记--bootstrap
AngularJs学习笔记系列第一篇,希望我可以坚持写下去.本文内容主要来自 http://docs.angularjs.org/guide/ 文档的内容,但也加入些许自己的理解与尝试结果. 一.总括 ...
- AngularJs学习笔记--Using $location
原版地址:http://code.angularjs.org/1.0.2/docs/guide/dev_guide.services.$location 一.What does it do? $loc ...
- AngularJs学习笔记--Modules
原版地址:http://code.angularjs.org/1.0.2/docs/guide/module 一.什么是Module? 很多应用都有一个用于初始化.加载(wires是这个意思吗?)和启 ...
- AngularJs学习笔记--Dependency Injection(DI,依赖注入)
原版地址:http://code.angularjs.org/1.0.2/docs/guide/di 一.Dependency Injection(依赖注入) 依赖注入(DI)是一个软件设计模式,处理 ...
随机推荐
- Swift 中的利刃,函数和闭包
input[type="date"].form-control,.input-group-sm>input[type="date"].input-grou ...
- 64.OV7725初始化配置
所有的结局都是好的,不好,是因为你还有坚持到最好. OV7725摄像头的初始化配置,需要SCCB总线即IIC接口配置.先发送配置数据到OV7725中,然后通过随机读取对应地址的数据来验证数据是否写进去 ...
- easyui中jquery重复引用问题(tab内存泄露问题)
今天认真测试了下easyui的一些兼容性问题,发现在ie9 ie10 首次加载的时候,会出现如下bug.如图所示: 认真看了下,我估计是脚本重复引用的问题,我用的iframe框架的模式.登陆系统后,桌 ...
- Mysql去除重复
常用的有两种方法,第一种就是select distinct name from table.但是有时候我们要返回多个字段时就用第二种方法select *, count(distinct name) f ...
- Kinect帮助文档翻译之二 手势
使用或创建手势 有两种方法可以将手势识别添加到你的unity项目中.第一种:找到KinectManager组件,在例子中它被附在MainCamera上.在组件中有两个列表的属性“Player1 Ges ...
- hive搭建配置
下载cd /data0/software/hivewget http://mirror.bit.edu.cn/apache/hive/hive-0.12.0/hive-0.12.0-bin.tar.g ...
- 学习笔记--HashMap浅析
HashMap 实现了Map 接口,其底层以一个线性数组保存哈希表,所以它既有数组查询的高效,也有哈希存取的方便. HashMap提供了默认构造器,和有参构造器,在有参构造器中,提供了两个参数,可以对 ...
- 拓展Jquery对象,实现Post提交并跳转
$.extend({ StandardPost:function(url,args){ var body = $(document.body), form = $("<form met ...
- python 数据结构-列表
列表常用方法汇总: #定义列表li li=[12.23,456,88,9] a=[1,2,3] #添加元素到列表结尾 li.append(360) #追加列表元素extend(L) li.extend ...
- 【转载】Android异步处理系列文章
本博文地址:http://blog.csdn.net/mylzc/article/details/6777767 转载请注明出处. 为了给用户带来良好的交互体验,在Android应用的开发过程中需要把 ...