AngularJS 速成

视图

因为AngularJS 依靠浏览器去解析模板,所以要保证模板是有效的HTML。尤其要小心闭合号HTML标签(未闭合好的标签不会产生任何错误信息,但会让视图不能正确渲染)。AngularJS 在有效的DOM树下才能好好工作。

AngularJS 扩展了HTML的词汇库(增加新的属性或HTML元素,并告知浏览器如何解释它们),这类似于创造了一门基于HTML的领域特定语言(domain-specific language, DSL),并指导浏览器如何理解它。因此,常听到AngularJS “教浏览器新把戏”的说法。

AngularJS 提倡声明式UI结构。在实践中,这意味着模板专注于描述所需要的效果,而非其实现。

模块与依赖注入

AngularJS 为自己定义了全局命名空间angular,它提供多种功能及不少便利函数,module就是其中之一。module为AngularJS 管理的对象(控制器、服务等)扮演容器的角色。

定义新的模块,需要传入名字,作为调用module的第一个参数,而第二个参数则表达此模块依赖其他哪些模块。

模块定义好了,要告知AngularJS 它的存在,这只要为ng-app属性赋值即可。

<!--接下来的内容,其实我没读懂,先简略记录一下吧 -->

协作对象

AngularJS 用模块组织对象。在模块上可以注册的对象,不仅限于AngularJS 对象(控制器、过滤器等),还包括开发者自定义的任何对象。

模块模式在组织代码方面非常有用,但是,AngularJS 走得更远一些。除了在模块中注册对象外,它还可以声明这些对象的相互依赖关系。

如前所述,$scope对象神秘地注入了控制器中。实际上,这是因为控制器声明了它需要$scope,所以AngularJS 才会创建并注入它。这套依赖管理系统可以这样总结:“为了正常工作,我需要一个依赖(协作对象):我不知道它从哪儿来,也不知道它如何创建。我只知道我需要它,所以请为我提供它。”

注册服务

AngularJS 只连接其认识的对象。因此,接入依赖注入机制的第一步,是将对象注册在模块上。我们不直接注册对象的实例,而是将对象创建的方案抛给依赖注入系统,然后AngularJS 解释这些方案以初始化对象,并在之后连接它们,最后成为可运行的应用。

AngularJS 的$provide服务可以注册不同的对象创建方案。之后$injector服务会解释这些方案,生成完备而可用的对象实例(已经解决好所有的依赖关系)。

可以用service方法注册构造函数,也可以用factory方法,它比service更加灵活。

以上描述过的所有注册方法,都是最通用方法provider的特殊类型。

模块的生命周期

AngularJS支持多种对象创建方案,provider是其中的通用方法,它在创建对象实例前可以对其进行配置。为了支持provider,AngularJS 将模块的生命周期分为两个阶段:

  • 配置阶段:收集对象创建方案,并进行配置。
  • 运行阶段:执行所有初始化后的逻辑

AngularJS应用中的服务是不能重名的,父模块中的服务会覆盖子模块中的同名服务。

<!--

作者:纤锐
出处:http://www.cnblogs.com/beginner2014/p/5169150.html
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接。谢谢合作。

-->

精通AngularJS 读书笔记(2)的更多相关文章

  1. 精通AngularJS 读书笔记(1)

    邂逅AngularJS AngularJS是采用JavaScript语言编写的客户端MVC框架,帮助开发者编写现代化的单页面应用.尤其适合编写有大量CURD操作的,具有AJAX风格的富客户端应用. 使 ...

  2. Mastering Web Application Development with AngularJS 读书笔记-前记

    学习AngularJS的笔记,这个是英文版的,有些地方翻译的很随意,做的笔记不是很详细,用来自勉.觉得写下来要比看能理解的更深入点.有理解不对的地方还请前辈们纠正! 一.关于<Mastering ...

  3. Mastering Web Application Development with AngularJS 读书笔记(三)

    第一章笔记 (三) 一.Factories factory 方法是创建对象的另一种方式,与service相比更灵活,因为可以注册可任何任意对象创造功能.例如: myMod.factory('notif ...

  4. Mastering Web Application Development with AngularJS 读书笔记(二)

    第一章笔记 (二) 一.scopes的层级和事件系统(the eventing system) 在层级中管理的scopes可以被用做事件总线.AngularJS 允许我们去传播已经命名的事件用一种有效 ...

  5. Mastering Web Application Development with AngularJS 读书笔记(一)

    第一章笔记 (一) 一.PS:运行时配置IIS <html> <head> <script src="angular.js"></scri ...

  6. 《html5 从入门到精通》读书笔记(二)

    接着上面继续记录笔记,这次要记的知识点比较多...记录下我认为比较重要的东西. 一.表单属性 1.autocomplete属性 该属性规定form或input域应该拥有自动完成功能. <form ...

  7. 《html5 从入门到精通》读书笔记(一)

    今天看了<html5 从入门到精通>这本书,感觉阅读下来很舒心,不像阅读其他书籍很揪心.html增加的知识点,我觉得非常有价值,看完几章记录了一些内容,不但能巩固,也为下次遗忘知识点做好准 ...

  8. 【精通css读书笔记】 第八章 布局

    学习了css布局的基础后又来翻阅<精通css>这本经典书籍,对布局有了进一步的认识. 基于浮动的布局 两列的布局仍然是使用一个元素向左浮动,一个元素向右浮动,值得注意的是要加入displa ...

  9. 《Linux.Shell编程从入门到精通》读书笔记

    第一章 第一个Shell程序 以 #!解析器名称 开头,表示选择哪个解释器解释shell脚本 source命令 export命令 env命令 unset命令 第二章 shell编程基础 函数传递 标准 ...

随机推荐

  1. Quartz作业调度框架及时间表达式的含义和语法

    Quartz 是一个开源的作业调度框架,它完全由 Java 写成,并设计用于 J2SE 和 J2EE 应用中.它提供了巨大的灵活性而不牺牲简单性.你能够用它来为执行一个作业而创建简单的或复杂的调度.本 ...

  2. python学习道路(day6note)(time &datetime,random,shutil,shelve,xml处理,configparser,hashlib,logging模块,re正则表达式)

    1.tiim模块,因为方法较多我就写在code里面了,后面有注释 #!/usr/bin/env python #_*_coding:utf-8_*_ print("time".ce ...

  3. C++ 从一组数据中按概率选择一个

    #include <stdio.h> #include <stdint.h> #include <ctime> #include <vector> #i ...

  4. 读懂UI设计的心理学

    好文转载,版权归原作者 作为UI设计师,对待用户就像对待婴儿,知道如何通过界面设计诱导用户非常重要,这就需要了解心理学方面的知识了.今天分享一篇日本设计师的好文,结合心理学与设计,教你读懂心理学,提高 ...

  5. Method Swizzling

    学习博客: http://www.cocoachina.com/ios/20160121/15076.html (这个作者太牛了,写了我一直想知道的类簇的swizz方法) 一. 一般的swizz 先给 ...

  6. 编写bat(批处理文件)的优势

    以前编写java小程序打成jar包运行的时候非常麻烦,在dos环境先cd进入那个文件夹,再运行java -jar *.jar,自从看了bat以后,发现.bat真的是dos下面运行的好帮手. @echo ...

  7. wp8.1 VS2013部署手机发生 DEP6100 6200错误

    wp8.1 VS2013部署手机发生 DEP6100 6200错误 ,提示未发现手机. 可能是数据线有问题 建议更换 本人的电脑有很多次,提示DEP6100 6200错误,每一次都需要重做系统.. 然 ...

  8. Android 基于Android的手机邮件收发(JavaMail)之一(准备工作)

    界面一共是五个界面,分别是welcomeActivity,ReceiveAndSendActivity,ReceiveListActivity,SendMailActivity,MailDetails ...

  9. java8 学习系列--NIO学习笔记

    近期有点时间,决定学习下java8相关的内容: 当然了不止java8中新增的功能点,整个JDK都需要自己研究的,不过这是个漫长的过程吧,以自己的惰性来看: 不过开发中不是有时候讲究模块化开发么,那么我 ...

  10. Spring操作指南-AOP基本示例(基于XML)