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)创建一个新的实例。一个模块就是一种配置注入器实例工厂的方式,也称为“提供者”。


0 0
原创粉丝点击