2.AngularJS 作用域( scope )
作用域( scope ) 是构成AngularJS应用的核心基础。应用的作用域是和应用的数据模型相关联的,同时作用域也是表达式执行的上下文,$scope 对象定义应用业务逻辑、控制器方法和视图属性的地方。
在应用将视图渲染并呈献给用户之前,视图中的模板会和作用域进行链接,然后应用会对DOM进行设置以便将属性变化通知给 AngularJS。
作用域提供了监视数据模型变化的能力。它允许开发者使用其中的apply机制,将数据模型的变化在整个应用范围内进行通知。我们在作用域的上下文中定义和执行表达式,同时它也是将事件通知给另一个控制器和应用其他部分的中介。
将应用的业务逻辑都放在控制器中,而将相关的数据都放在控制器的作用域中。
一、视图和 $scope 的世界
AngularJS 启动并生成视图时,会将根 ng-app 元素同 $rootScope 进行绑定。$rootScope 是所有在 $scope 对象的最上层。
$scope 对象在 AngularJS 中充当数据模型,但与传统的数据模型不一样,$scope并不负责处理和操作数据,它只是视图和HTML之间的桥梁,它是视图和控制器之间的胶水
$scope 的所有属性都可以自动被视图访问到
例:
AngularJS 之 作用域(scope)
Hello,{{name}}
运行结果:
作用域的基本功能: 1、提供观察者以监视数据模型的变化 2、可以将数据模型的变化通知给整个应用。甚至是系统外的组件 3、可以进行嵌套,隔离业务功能和数据 4、给表达式提供运算所需的执行环境
开发 AngularJS 应用的大部分工作内容,就是构建作用域及相关数据
作用域包含了渲染视图时所需的功能和数据
二、scope 的生命周期
1、创建
在创建控制器或指令时,AngularJS 会用 $injector 创建一个新的作用域,并在这个新建的控制器或指令运行时将作用域传递进去。
2、链接
当 Angular 开始运行时,所有的 $scope 对象都会附加或者链接到视图中。所有创建 $scope对象的函数也会自身附加到视图中。这些作用域将会注册当 Angular 应用发生变化时需要运行的函数($watch)。
3、更新
当事件循环运行时,它通常执行在 $rootScope,每个子作用域都执行自己的脏值检测。每个监控函数都会检查变化。如果检测到任意变化,$scope对象就会触发指定的回调函数。
4、销毁
当一个 $sscope 在视图不再需要时,这个作用域将会清理和销毁自己。
尽管永远不会需要清理作用域(AngularJS会自动处理),但是知道是谁创建这个作用域还是有用的,因为你可以使用这个 $scope 上叫做 $destory() 的方法来清理这个作用域。
标签:
相关文章
-
无相关信息