2.AngularJS 作用域( scope )

本文深入探讨了AngularJS中的作用域概念,包括其基本功能、生命周期等关键信息,旨在帮助开发者更好地理解作用域如何作为视图与控制器间的桥梁。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

作用域( scope ) 是构成AngularJS应用的核心基础。应用的作用域是和应用的数据模型相关联的,同时作用域也是表达式执行的上下文,$scope 对象定义应用业务逻辑、控制器方法和视图属性的地方。


在应用将视图渲染并呈献给用户之前,视图中的模板会和作用域进行链接,然后应用会对DOM进行设置以便将属性变化通知给 AngularJS。


作用域提供了监视数据模型变化的能力。它允许开发者使用其中的apply机制,将数据模型的变化在整个应用范围内进行通知。我们在作用域的上下文中定义和执行表达式,同时它也是将事件通知给另一个控制器和应用其他部分的中介。


将应用的业务逻辑都放在控制器中,而将相关的数据都放在控制器的作用域中。


一、视图和 $scope 的世界

AngularJS 启动并生成视图时,会将根 ng-app 元素同 $rootScope 进行绑定。$rootScope 是所有在 $scope 对象的最上层。


$scope 对象在 AngularJS 中充当数据模型,但与传统的数据模型不一样,$scope并不负责处理和操作数据,它只是视图和HTML之间的桥梁,它是视图和控制器之间的胶水


 $scope 的所有属性都可以自动被视图访问到 


例:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>AngularJS 之 作用域(scope)</title>
    <script src="http://apps.bdimg.com/libs/angular.js/1.4.6/angular.min.js"></script>
</head>
<body ng-app="myApp">
   <!-- 将 name 变量定义为本地 $scope 的一个属性  -->
    <p>Hello,{{name}}</p>
    <script type="text/javascript">
       angular.module("myApp",[])
                .run(function($rootScope){
                    $rootScope.name = "AngularJs";
                });
    </script>
</body>
</html>

运行结果:



  作用域的基本功能:
                 1、提供观察者以监视数据模型的变化
                 2、可以将数据模型的变化通知给整个应用。甚至是系统外的组件
                 3、可以进行嵌套,隔离业务功能和数据
                 4、给表达式提供运算所需的执行环境

   开发 AngularJS 应用的大部分工作内容,就是构建作用域及相关数据

   作用域包含了渲染视图时所需的功能和数据

二、scope 的生命周期

1、创建 

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


2、链接

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


3、更新

当事件循环运行时,它通常执行在 $rootScope,每个子作用域都执行自己的脏值检测。每个监控函数都会检查变化。如果检测到任意变化,$scope对象就会触发指定的回调函数。


4、销毁

当一个 $sscope 在视图不再需要时,这个作用域将会清理和销毁自己。

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







评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值