Angular JS开发指南--(二)
来源:互联网 发布:微信系统源码下载 编辑:程序博客网 时间:2024/04/30 10:42
指令:当关联的HTML结构进入编译阶段时应该执行的操作。指令可以写在元素的名称里、属性里、CSS类名里、注释里。指令本质上只是一个当编译器编译到相关DOM时需要执行的函数。
其中在AngulaJS中一般通过ng-model指令给控件绑定事件,
例如在input上通过ng-model指令给<input>输入框绑定了Keydown事件。
<!doctype html><html ng-app> <head> <script src="angular-1.1.0.min.js"></script> </head> <body> <input ng-model="name"> <p>Hello {{name}}!</p> </body> </html>
在编译阶段:A.input上通过ng-model指令给<input>输入框绑定了Keydown事件;
B.{{name}}这个变量替换表单式建立了一个$watch来接受name变量改变的通知;
在执行期间:A.按下任何一个键(以X键为例),都会触发一个input输入框的Keydown事件;
B.input上的指令捕捉到input里值得改变,燃火调用$apply("name='X';")来更新处于AngulaJS执行上下文中的模型。
C.AngulaJS将name='X'应用到模型上;
D.$digest循环开始;
E.$watch列表检测到了name值的变化,然后通知{{name}}变量替换的表达式,这个表达恨死负责将DOM进行更新;
F.AngulaJS退出执行上下文,然后退出Javascript上下文中的Keydown事件;
G.浏览器以更新的文本重新渲染视图。
作用域(Scope):作用域是用来检测模型的改变和为表达式提供执行上下文的。它是分层组织起来的,并且层级关系是紧跟着DOM的结构的。
控制器:视图背后的控制代码就是控制器。它的主要工作内容是构造模型,并把模型和回调方法一起发送到视图。视图可以看做是作用域在模板(HTML)上的“投影(projection)”。而作用域是一个中间地带,它把模型整理好传递给视图,把浏览器时间传递给控制器。控制器和模型分离是非常重要的,因为:
a)控制器是由Javascript写的。Javascript是命令式的,命令式的语言适合用来编写应用的行为。控制器不应该包含任何关于渲染的代码(DOM引用或片段)。
b)视图模板是用HTML写的。HTML是声明式的,声明式语言适合用来编写UI。视图不应该包含任何行为。
c)因为视图和控制器没有直接的调用关系,所以可以使多个视图对应同一个控制器。
模型:用来和模板结合生成视图的数据。模型必须在作用域中时可以被引用,这样才能被渲染生成视图。模型可以使原生的Javascript对象。
视图:指用户所看见的。视图的生命周期由作为一个模板开始,它将和模型合并并最终渲染到浏览器的DOM中。
指令:就是一种“由某个属性、元素名称、CSS类名出线而导致的行为,或者说是DOM的变化”。指令能让你以一种声明式的方法来扩展HTML表示能力。
过滤器(Filters):过滤器扮演着数据翻译的角色。一般他们主要用在数据需要格式化成本地格式的时候。它参照了UNIX过滤的规则,并且也实现了"|"(管道)语法。
模块和注入器:每个AngulaJS应用都有一个唯一的注入器。注入器提供一个通过名字查找对象实例的方法。它将素有对象缓存在内部,所以如果重复调用同一名称的对象,每次调用都会得到同一个实例。如果调用的对象不存在,那么注入器就会让实例工厂(instance factory)创建一个新的实例。一个模块就是一种配置注入器实例工厂的方式,也称为“提供者”。
- Angular JS开发指南--(二)
- Angular JS开发指南--(一)
- Angular JS开发指南--(三)
- Angular.js(二)
- (二)angular.js
- angular js尝试(二)
- Angular.js学习笔记(二)
- angular.js学习笔记(二)
- Cosmos开发指南(二)
- Angular JS解析(二)——解析一个APP
- Angular JS 开发Web应用程序
- 对于node.js开发指南中博客案例的修改实现(二)--代码
- Node.js开发指南之二:核心模块介绍
- Ember.js 入门指南 (二)
- Angular(二)服务
- Angular.js(一)
- Angular.js(三)
- Angular.js(四)
- 整理:常用字符串处理函数
- setjmp与longjmp
- linux 学习(centos)
- myeclipse和eclipse的快捷健
- LeetCode OJ - Sum Root to Leaf Numbers
- Angular JS开发指南--(二)
- 安卓入门笔记之Activity信使—intent
- CocoaPods安装
- Android ActionBar完全解析,使用官方推荐的最佳导航栏(上)
- “黑马程序员”学习java基础的第一天
- LINUX 网络协议栈实现分析-SKBUFF 的实现
- Freelancer 之潮:自由职业市场的崛起
- 如何在CentOS 6.4上安装并使用OpenVZ
- python 中Dict 转 Json