Page 35 - AngularJS权威教程
P. 35

4.5  指令和作用域   15


                                                                                                     1
                         更多关于Angular执行上下文的信息请参考第23章。

                  每当事件被处理时,$scope就会对定义的表达式求值。此时事件循环会启动,并且Angular                                     2
              应用会监控应用程序内的所有对象,脏值检测循环也会运行。

                                                                                                     3
                          第6章将深入讨论表达式。作用域的表达式就是赋值给作用域对象的变量。当我
                         们给上面提到的作用域中的name变量赋值,比如$scope.name="Ari",实际上
                         是设置了一个表达式,即使这个值只是一个简单的字符串。                                                  4

                  $scope对象的生命周期处理有四个不同阶段。
                                                                                                     5

              4.4.1 创建
                                                                                                     6
                  在创建控制器或指令时,AngularJS会用$injector创建一个新的作用域,并在这个新建的控
              制器或指令运行时将作用域传递进去。                                                                      7

              4.4.2 链接
                                                                                                     8

                  当Angular开始运行时,所有的$scope对象都会附加或者链接到视图中。所有创建$scope对
              象的函数也会将自身附加到视图中。这些作用域将会注册当Angular应用上下文中发生变化时需                                          9
              要运行的函数。

                      这些函数被称为$watch函数,Angular通过这些函数获知何时启动事件循环。                                       10


              4.4.3 更新                                                                               11

                  当事件循环运行时,它通常执行在顶层$scope对象上(被称作$rootScope),每个子作用域
              都执行自己的脏值检测。每个监控函数都会检查变化。如果检测到任意变化,$scope对象就会触                                          12
              发指定的回调函数。
                                                                                                     13
              4.4.4 销毁
                                                                                                     14
                  当一个$scope在视图中不再需要时,这个作用域将会清理和销毁自己。

                  尽管永远不会需要清理作用域(因为Angular会为你处理),但是知道是谁创建了这个作用域
              还是有用的,因为你可以使用这个$scope上叫做$destory()的方法来清理这个作用域。                                         15


              4.5  指令和作用域                                                                            16


                  指令在AngularJS中被广泛使用,指令通常不会创建自己的$scope,但也有例外。比如                                      17
              ng-controller和ng-repeat指令会创建自己的子作用域并将它们附加到DOM元素上。
                  在介绍更多内容之前,我们先来看看控制器是什么,以及如何在应用中使用它们。                                               18
   30   31   32   33   34   35   36   37   38   39   40