素材巴巴 > 程序开发 >

2.AngularJS 作用域( scope )

程序开发 2023-09-06 14:46:23

作用域( 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() 的方法来清理这个作用域。








标签:

上一篇: ionic3环境搭建 下一篇:
素材巴巴 Copyright © 2013-2021 http://www.sucaibaba.com/. Some Rights Reserved. 备案号:备案中。