AngularJS

作者: glenlg | 来源:发表于2019-01-11 16:01 被阅读0次

    5.手动初始化

    Angular 代码运行时遵循的顺序:

    1. 在HTML页面以及所有代码加载完毕后,Angular 会去找到应用的根元素(通常是文档的根节点)

    2. 调用 api/angular.bootstrap 去 编译 各元素成为一个可执行的且双向绑定的应用

    6.自动初始化

    Angular 在以下两种情况下自动初始化,一个是在 DOMContentLoaded 事件触发时,或者在 angular.js 脚本被执行的同时如果 document.readyState 被置为 'complete' 的话。初始化时,Angular 会去找 ng-app 这个指明应用开始所在的指令。如果 ng-app 指令被找到的话,Angular 会做以下几件事:

    • 加载 ng-app 指令所指定的 模块

    • 创建应用所需的 injector

    • 以 ng-app 所在的节点为根节点,开始遍历并编译DOM树(ng-app 指出了应用的哪一部份开始时 Angular 去编译的)

    7.

    当 api/angular.bootstrap 被调用时,如果 window.name 包含 NG_DEFER_BOOTSTRAP! 前缀,引导进程会被暂停直到 angular.resumeBootstrap() 被调用。

    8.

    概念 说明

    模板(Template) 带有Angular扩展标记的HTML

    指令(Directive) 用于通过自定义属性和元素扩展HTML的行为

    模型(Model) 用于显示给用户并且与用户互动的数据

    作用域(Scope) 用来存储模型(Model)的语境(context)。模型放在这个语境中才能被控制器、指令和表达式等访问到

    表达式(Expression) 模板中可以通过它来访问作用域(Scope)中的变量和函数

    编译器(Compiler) 用来编译模板(Template),并且对其中包含的指令(Directive)和表达式(Expression)进行实例化

    过滤器(Filter) 负责格式化表达式(Expression)的值,以便呈现给用户

    视图(View) 用户看到的内容(即DOM)

    数据绑定(Data Binding) 自动同步模型(Model)中的数据和视图(View)表现

    控制器(Controller) 视图(View)背后的业务逻辑

    依赖注入(Dependency Injection) 负责创建和自动装载对象或函数

    注入器(Injector) 用来实现依赖注入(Injection)的容器

    模块(Module) 用来配置注入器

    服务(Service) 独立于视图(View)的、可复用的业务逻辑

    9.

    对于Angular,一个程序中唯一允许接触DOM的地方就是“指令”

    10.

    Angular可以通过这种数组语法来定义依赖,以免js代码压缩器(Minifier)破坏这个“依赖注入”的过程。 因为这些js代码压缩器通常都会把构造函数的参数重命名为很短的名字,比如a,而常规的依赖注入是需要根据参数名来查找“被注入对象”的。 (译注:因为字符串不会被js代码压缩器重命名,所以数组语法可以解决这个问题。)

    10.

    一般情况下,我们使用控制器做两件事:

    • 初始化 $scope 对象

    • 为 $scope 对象添加行为(方法)

    11.

    最常见的保持控制器“纯度”的方法是将那些不属于控制器的逻辑都封装到服务(services)中,然后在控制器中通过依赖注入调用相关服务。

    12.通过两种方法可以实现控制器和 scope 对象的关联:

    • ngController指令 这个指令就会创建一个新的 scope

    • $route路由服务 

    13.

    作用域是Web应用的控制器和视图之间的粘结剂。在Angular中,最直观的表现是:在自定义指令中,处在模版的 链接(linking) 阶段时, 指令(directive)会设置一个 $watch 函数监听着作用域中各表达式(注:这个过程是隐式的)。这个 $watch 允许指令在作用域中的属性变化时收到通知, 进而让指令能够根据这个改变来对DOM进行重新渲染,以便更新已改变的属性值(注:属性值就是scope对象中的属性,也就是数据模型)。

    14. 作用域可以像DOM节点一样,进行事件的传播。主要是有两个方法:

    • broadcasted :从父级作用域广播至子级 scope

    • emitted :从子级作用域往上发射到父级作用域

    15.

    相关文章

      网友评论

          本文标题:AngularJS

          本文链接:https://www.haomeiwen.com/subject/xnmxdqtx.html