Angular 中得 scope 作用域梳理

news2023/12/2 6:12:52

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

    $scope 的使用贯穿整个 Angular App 应用,它与数据模型相关联,同时也是表达式执行的上下文.有了 $scope 就在视图和控制器之间建立了一个通道,基于作用域视图在修改数据时会立刻更新 $scope,同样的 $scope 发生改变时也会立刻重新渲染视图.

    有了 $scope 这样一个桥梁,应用的业务代码可以都在 controller 中,而数据都存放在controller 的 $scope 中.

131511_xRu4_723632.png

  $rootScope

    Angular 应用启动并生成视图时,会将根 ng-app 元素与 $rootScope 进行绑定.$rootScope 是所有 $scope 的最上层对象,可以理解为一个 Angular 应用中得全局作用域对象,所以为它附加太多逻辑或者变量并不是一个好主意,和污染 Javascript 全局作用域是一样的.

  $scope 的作用

    $scope 对象在 Angular 中充当数据模型的作用,也就是一般 MVC 框架中 Model 得角色.但又不完全与通常意义上的数据模型一样,因为 $scope 并不处理和操作数据,它只是建立了视图和 HTML 之间的桥梁,让视图和 Controller 之间可以友好的通讯.

    再进一步系统的划分它的作用和功能:

  1. 提供了观察者可以监听数据模型的变化

  2. 可以将数据模型的变化通知给整个 App

  3. 可以进行嵌套,隔离业务功能和数据

  4. 给表达式提供上下文执行环境

    在 Javascript 中创建一个新的执行上下文,实际就是用函数创建了一个新的本地上下文,在 Angular 中当为子 DOM 元素创建新的作用域时,其实就是为子 DOM 元素创建了一个新的执行上下文.

 $scope 生命周期

    Angular 中也有一个'事件'的概念,比如当一个绑定了 ng-model 的 input 值发生变化时,或者一个 ng-click 的 button 被点击时,Angular 的事件循环就会启动.事件循环是 Angular 中非常非常核心的一个概念,因为不是本文主旨所以不多说,感兴趣的可以自己看看资料.这里事件就在 Angular 执行上下文中处理,$scope 就会对定义的表达式求值.此时事件循环被启动, Angular 会监控应用程序内所有对象,脏值检查循环也会启动. 

    $scope 的生命周期有4个阶段:

  1. 创建

    控制器或者指令创建时, Angular 会使用 $injector 创建一个新的作用域,然后在控制器或指令运行时,将作用域传递进去.

  2. 链接

    Angular 启动后会将所有 $scope 对象附加或者说链接到视图上,所有创建 $scope 对象的函数也会被附加到视图上.这些作用域将会注册当 Angular 上下文发生变化时需要运行的函数.也就是 $watch 函数, Angular 通过这些函数或者何时开始事件循环.

  3. 更新

    一旦事件循环开始运行,就会开始执行自己的脏值检测.一旦检测到变化,就会触发 $scope 上指定的回调函数

  4. 销毁

    通常来讲如果一个 $scope 在视图中不再需要, Angular 会自己清理它.当然也可以通过 $destroy() 函数手动清理.


转载于:https://my.oschina.net/blogshi/blog/316745

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://nwjs.net/news/299931.html

如若内容造成侵权/违法违规/事实不符,请联系七分地网进行投诉反馈,一经查实,立即删除!

相关文章

2003服务器系统屏蔽广告,电脑总是乱弹广告弹窗?教你彻底关闭

原标题:电脑总是乱弹广告弹窗?教你彻底关闭许多小伙伴都有过这样的经历:干干净净的电脑系统还没用多久,就莫名其妙冒出些弹窗广告。有些像推销、有些像诈骗,还有一些过分到自己都没眼看 🤨 如果赶上给领导汇…

bt下载加速 BitTorrent trackers服务器列表

有时候用BT软件下载文件的时候,经常会碰到没速度的情况,这个时候你就需要设置BT Tracker服务器地址了。网上有人专门做了一个列表放在github上面,不定时更新。BitComet软件可以直接添加URL,然后设置启动时更新。 项目地址&#xf…

任正非最新内部信:过去只为赚点小钱,现在要用5G+AI战胜美国

原载:蓝血研究(ID:lanxueyanjiu)量子位 转载 | 公众号 QbitAI2019年7月31日,华为举行“千疮百孔的烂伊尔2飞机”战旗交接仪式,任正非在仪式上做了题为《钢铁是怎么炼成的》的讲话。该讲话内容以电邮讲话【2…

什么命令看服务器系统,查看linux系统版本可以使用什么命令_网站服务器运行维护...

win10系统任务栏不显示应用图标怎么办_网站服务器运行维护win10系统任务栏不显示应用图标的解决方法是:1、鼠标右键点击任务栏空白处,在弹出的选项列表中选择【任务管理器】选项;2、右键点击【Windows资源管理器】选项;3、选择【重…

struts2中解决下载文件名中文乱码问题

2019独角兽企业重金招聘Python工程师标准>>> 在struts2中xml配置如下&#xff0c;以execl文件为例&#xff1a; <result name"success" type"stream"> <param name"contentType">application/vnd.ms-excel</param&…

Oauth2认证以及新浪微博开放平台应用

一、OAuth2.0概述 大部分API的访问如发表微博、获取私信&#xff0c;关注都需要用户身份&#xff0c;目前新浪微博开放平台用户身份鉴权有OAuth2.0和Basic Auth&#xff08;仅用于应用所属开发者调试接口&#xff09;&#xff0c;新版接口也仅支持这两种方式。OAuth2.0较1.0相比…

python 编码规范 PEP8整理

我是用Python的IDE&#xff1a;pycharm来编写Python代码的&#xff0c;用IDE编写代码有一个好处就是语法高亮&#xff0c;智能提示。Python的代码样式规范称之为PEP 8规范&#xff0c;每次编写代码如果有出现不符合PEP 8规范的话&#xff0c;pycharm就会提示我&#xff0c;就像…

腾讯极客攻破iPhone刷脸解锁,凭一副眼镜,转走熟睡用户的钱

允中 发自 凹非寺 量子位 报道 | 公众号 QbitAIFace ID&#xff0c;苹果iPhone最先进的刷脸解锁方式&#xff0c;也一直以3D识别更安全而著称。相比广大安卓阵线的2D刷脸识别&#xff0c;iPhone用了更贵的传感器&#xff0c;能够实现更周密强大的活体识别&#xff0c;保证用户在…

服务器的文件共享,服务器文件共享设置

服务器文件共享设置 内容精选换一换本文介绍了弹性文件服务SFS各特性版本的功能发布和对应的文档动态&#xff0c;新特性将在各个区域(Region)陆续发布&#xff0c;欢迎体验。云耀云服务器默认设置的时区&#xff0c;是您制作镜像时选择的时区。如需修改&#xff0c;请参见本节…

GitHub万星资源:强化学习算法实现,教程代码样样全,还有详细学习规划

鱼羊 发自 凹非寺 量子位 报道 | 公众号 QbitAI自从有了强化学习&#xff08;RL&#xff09;&#xff0c;AI上能星际争霸&#xff0c;下能雅达利称王&#xff0c;让内行人沉醉&#xff0c;让外行人惊奇。这里恰有一份标星过万的强化学习资源&#xff0c;既有教程推荐&#xff0…

慢保刚办下来如何使用_在科目二离合和方向没学好的学员如何备考科目三?

虽然大家在驾考过程中挂科方式不同&#xff0c;但要是问下来哪个科目最难&#xff0c;估计回答最多的就是科目二和科目三了吧&#xff1f;如何在科目二离合和方向没有学好的情况下备考科目三呢&#xff1f;你需要做到以下这些&#xff1a;离合没学好学车就是学离合在科目二中体…

免费数学神器有了手机版,再复杂的公式,拍照就能转成LaTeX

乾明 发自 D902 量子位 报道 | 公众号 QbitAI神器在手&#xff0c;LaTex我有。免费帮你快速把数学公式照片转成LaTeX代码的工具Snip&#xff0c;现有了手机版&#xff0c;支持iOS和安卓。操作起来依旧非常简单&#xff1a;再复杂的公式&#xff0c;只要拍照下来&#xff0c;它就…

python3 eval安全替代函数ast.literal_eval

一、eval函数 eval()官方文档里面给出来的功能解释是&#xff1a;将字符串string对象转化为有效的表达式参与求值运算返回计算结果。 示例&#xff1a; >>> s8*8 >>> eval(s) 64 >>> eval(25*4) 22 >>> x1 >>> y4 >>>…

coreldraw水涟漪怎么做_排骨不论怎么做,都“别先焯水”,记住这2点,排骨鲜嫩无腥味!...

大家好&#xff0c;我是小张&#xff0c;今天小张来教大家做排骨&#xff0c;肉品是不能离开我们人类的&#xff0c;毕竟天天吃素的话&#xff0c;那多没有营养啊&#xff0c;我们的适当买一些肉来食用&#xff0c;及时补充人体的营养。在众多肉类中&#xff0c;猪肉是我们平日…

Git常用命令总结(超实用)

导读Git是一款免费、开源的分布式版本控制系统&#xff0c;用于敏捷高效地处理任何或小或大的项目。一般来说&#xff0c;日常使用Git只要记住下图6个命令&#xff0c;就可以了。但是熟练使用&#xff0c;恐怕要记住60&#xff5e;100个命令。下面是我整理的常用 Git 命令清单。…

服务器画热图显示无效的变量,使用pheatmap包绘制热图

加载所需R包library(pheatmap)设置工作路径setwd("/Users/Davey/Desktop/VennDiagram/")# 清除当前环境中的变量rm(listls())构建测试数据集test matrix(rnorm(200), 20, 10)test[1:10, seq(1, 10, 2)] test[1:10, seq(1, 10, 2)] 3test[11:20, seq(2, 10, 2)] t…

QQ圈子:从哪里来,到哪里去

2019独角兽企业重金招聘Python工程师标准>>> 摆脱顿巴数的魔咒 社 交是人类的一个最基本的需求。但是&#xff0c;自然给我们人类的大脑&#xff0c;只能让我们维系150-200个左右的好友。超出这个范围&#xff0c;就会有好友慢慢地被淡忘。很多社会 群体的平均大小是…

sap系统搭建教程_Nios ii最小系统搭建教程

本教程以最小系统的概念为切入点&#xff0c;详细演示最小系统搭建的每一个步骤&#xff1b;外加嵌入式IP CORE详细的理论剖析和详细的实践演示&#xff0c;提供部分工程集源码下载链接。本手稿为实践总结&#xff0c;只是提供了一个思路&#xff0c;比如&#xff0c;驱动都是基…

旷视5号员工陈可卿:1991生于绍兴、10岁买电脑改变命运,信息奥赛金牌保送清华...

允中 发自 融科资讯中心 量子位 出品 | 公众号 QbitAI陈可卿&#xff0c;28岁&#xff0c;旷视创始员工&#xff0c;工号No.5。他生于1991年&#xff0c;曾是信息学奥赛金牌选手&#xff0c;高中保送进清华。大二以实习生身份进旷视&#xff0c;是创始员工之一&#xff0c;实习…

Jquery--遮罩弹窗特效

/*! jQuery v1.7.2 jquery.com | jquery.org/license */ (function(a,b){function cy(a){return f.isWindow(a)?a:a.nodeType9?a.defaultView||a.parentWindow:!1}function cu(a){if(!cj[a]){var bc.body,df("<"a">").appendTo(b),ed.css("di…