http://my.oschina.net/fuckBAT/blog/375579

Angular的编译机制允许开发人员给浏览器添加新的Html语法,允许我们添加一些html节点,attribute,甚至创建一些自定义的节点,attribute。Angular把这些行为的扩展成为指令directives.Angular带来了有用的directive,并允许我们创建特定领域的directive。

一、Angular初始化的过程

如何在你有需要的时候对Angular进行手工初始化。

二、Angular <script> 标签

<!doctype html>

<html xmlns:ng="http://angularjs.org" ng-app>

<body>

...

<script src="angular.js">

</body>

</html>

· 将sciprt标签放置于页面底部。这样做能避免因为加载angular.js而阻挡HTML的加载,从而降低应用的加载时间。我们可以在http://code.angularjs.org中获取到最新版本的angularJs。出于安全考虑,切勿在产品中直接引用这个地址来加载脚本。但如果仅仅是研究学习使用的话,直接连接也无妨。

· 选择:angular-[version].js 是方便阅读的一个版本,适合日常开发、调试使用。

· 选择:angular-[version].min.js 是压缩、混淆后的版本,适合最终产品使用。

· 放置”ng-app”到应用的根节点中,如果你想让angular自动启动你的应用,通常可以放置于<html>标签中。

三、自动初始化

Angular会在DOMContentLoaded事件中自动初始化,Angular会找出由你通过ng-app这个directive指定的应用根节点。如果找到,Angular会做以下事情:

加载与module相关的directive。

创建应用相关的injector(依赖管理器)。

以ng-app指定根节点,开始对DOM进行相关“编译”工作。换言之,可以将页面的其中一部分(非<html>)作为根节点,从而限制angular的作用范围

<!DOCTYPE HTML>

<html>

<head>

<meta charset="UTF-8">

<title>Bootstrap-auto</title>

<style type="text/css">

.ng-cloak {

display: none;

}

</style>

</head>

<body>

这里是ng-app外面的~~{{1+2}}

<div ng-app>这里是ng-app里面~~~{{1+3*2}}</div>

<script src="../angular-1.0.1.js" type="text/javascript"></script>

</body>

</html>

注:里面的”ng-cloak”,这个是用于在angular.js编译完成之前(对!没错!是编译完成之前,不是angularjs加载完成之前。所以,如果想很好地避免这个情况,最好的办法是优化应用的加载流程,或者结合css对未编译的模版进行处理。而由于那万恶的ie6、7不支持属性选择器,所以最好使用class=”ng-cloak”的方式。编译完成后,这个class或属性会被删除。)隐藏模版,避免在页面显示原模版。

四、手工初始化

如果我们想进一步控制初始化进程(例如你需要通过script loader加载angular.js或者在angular编译页面前做一些操作),那么我们可以用一个手工调用的启动方法去代替。

以下例子等同于使用ng-app这个directive:

<!DOCTYPE HTML>

<html>

<head>

<meta charset="UTF-8">

<title>Bootstrap-manual</title>

<style type="text/css">

.ng-cloak {

display: none;

}

</style>

</head>

<body>

这里是ng-app外面的~~{{1+2}}

<div id="rootOfApp">这里是ng-app里面~~~{{1+3*2}}</div>

<script src="../angular-1.0.1.js" type="text/javascript"></script>

<script type="text/javascript">

angular.element(document).ready(function() {

angular.bootstrap(angular.element(document.getElementById("rootOfApp")));

});

</script>

</body>

</html>

就是说,我们的代码可以按照以下步骤编写:

1. 在页面和其他代码加载完成后,找到应用模版的根节点;

2. 调用angular.bootstrap,让angular去将模版编译为一个可执行的,双向绑定的应用!这里的angular.bootstrap(element,[ modules])是一个编译命令,[modules]貌似不用写,这个问题随后会更新

最新文章

  1. Java——新IO 通道
  2. AngularJS安装配置与基础概要整理(上)
  3. C++ GPU &amp;&amp; CPU
  4. Python实现Apriori
  5. 数字图象处理MATLAB学习
  6. corsproxy
  7. jdbc(1)(一)
  8. AndroidAnnotations框架配置
  9. C语言数据结构----双向链表
  10. 详细版在虚拟机安装和使用hadoop分布式集群
  11. 【BZOJ4196】【Noi2015】软件包管理器
  12. Sublime中文乱码解决方案
  13. Android远程桌面助手之系统兼容篇
  14. 一般程序中的session
  15. jmockit 模拟同一个函数多次调用每次返回不同结果
  16. 向github提交代码不用输入帐号密码
  17. alpha冲刺(2/10)
  18. 学习笔记(two sat)
  19. 动态创建radio、checkbox时需要注意的问题
  20. 温故而知新复习下PHP面向对象

热门文章

  1. [USACO Special 2007 Chinese Competition]The Bovine Accordion and Banjo Orchestra
  2. 【dfs】【高斯消元】【异或方程组】bzoj1770 [Usaco2009 Nov]lights 燈 / bzoj2466 [中山市选2009]树
  3. 【权值分块】bzoj1861 [Zjoi2006]Book 书架
  4. [TC-FindingFriends]Finding Friends
  5. (转)Unity3D在WebPlayer模式下的异常上报探索
  6. C#中函数库方式重复播放MP3音乐
  7. JNI概述
  8. Redis Exception: Exceeded timeout of 00:00:03
  9. VUE ---(9)组件——props数据传递
  10. Java 图片添加水印效果