首页 >> 大全

angular中作用域的生命周期

2023-09-03 大全 39 作者:考证青年

作用域的生命周期

/9/3 0:11:20

先扯淡是惯例-------------生命对于人而言是再重要不过的东西了,但你不太可能每天去考虑自己离生命结束还有多久,生命周期就更谈不上了,人的生命一旦结束就不会再次开始,如果你坚持认为生命有轮回,好吧,咱俩的淡扯不到一块去。但对于angular的作用域来讲,它确实是有生命周期的,也就是说它可以死而复生,而且一定是在你需要它的时候它就生,不需要它的时候就让它死,听起来有些冷酷无情,但假如它在该死的时候没死,该活的时候没活,那结果可能就是----你被它玩死。生死这词大残酷了,我们还是文雅点,就叫它生命周期吧,开始正题。

一、## 弄清楚一个问题前我们必须知道它是个什么东西 ##

先仰视-----毕竟对于前端来讲,首次听到MVC时觉得好牛X,它是啥玩意不多说,但如果你认为$scope就是我们的数据模型的话,建议你好好的温习下大大对它的定义,必竟这个东西不同于扯淡,我们需要一个严谨的态度。$scope只是MVC中C和V的桥梁,或者官方的说法叫做glue,我觉得这个单词很传神的表达了对$scope的定位。也就是说它的存在会把MVC给贯穿起来,它是否处于生命周期之中,直接影响了MVC之间是否能够彼此互通。那么M呢,它在哪里?别这些文字弄晕,M大多数也存在于$scope上,但又不仅在这里,也可能你把它直接扔在了HTML里,或者存在于某个DOM元素的属性上。

_生命周期的区间是指_生命周期函数的作用

之所以仰视,是因为我们跪着,站起来吧-------很高大上么,no,no,no,说的直白点,$scope就是一个对象,和我们在js代码里看到的{}没什么不同,不要因为它和MVC厮混在一起就觉得它有多高大上,也不要觉得它名字叫作用域就觉得它好牛叉,它和js中的作用域完全是两个概念。既然是对象,那它也原型,有也在自己的原型链中所处的位置,事实就是这么一回事。

二、## 主题——生命周期 ##

既然谈周期,那必定有开始,有过程,有结束。

创建——在 1版本中,指令才是大boss,可以说就是它在指点的江山,所在应该在启动以后,第一步必须是先找到这些boss,boss能力有大小,有的可以创建scope,有的则不行,比如最常见到的ng-和ng-都会创建自己的作用域,有些指令还会创建属于自己的隔离作用域,应用了属性后还会创建隔离作用域的兄弟作用域,前面这句把中所有的4种作用域的类型都说了,想要弄清楚自己资料,或者等我哪天兴致来了再写吧。至于创建的过程被分成了2个阶段,第一阶段是,第二阶段是link,那你猜scope是在哪个阶段创建?如果真的是靠猜的,还是好好查查资料。的时候,会把指令对应的模板进行转换,并且对于一个指令的多个实例,只会编译一次,很显然这时候生成作用域是不合适的。这里有一个很重要的顺序就是从上到下,而link是从下到上的,这样的顺序保证了在进行M和V的链接时,所有的编译工作都已完成。

注册监视——作用域一旦生成,指令就会在它身上注册一个监视,就是我们平时用到的$scope.$watch(),顾名思义监视什么,肯定是去监视数据有没有变化啊,难道还监视隔壁妹子洗澡不成。

_生命周期函数的作用_生命周期的区间是指

模型突变——以上两个过程完成之后,数据和视图之间的链接成功建议,这个时候一旦数据模型发生了变化,就应该做点什么了,当然做什么取决于你。这个时候比如用户在文本框里输入了数据,或者ajax取回的新的数据要应用在程序中,或者用户点击了东西需要我们更改一些数据。这里关键的东西是,假如数据在用户端发生了变化,如何从浏览器的js环境进入到的环境中操作在模型上的数据,这里偷个懒用下官网的图,但是请记住$scope.$apply,它是从js进入到的通道,在应该内置指令时,你不会去调用这个方法是因为帮你做了,等于没做。那么当你自己定义指令时,要更新数据时你唯一的选择就是它。

图片描述

观察——有了变化,我们就要观察这个变化影响的范围到底有多大,那么在进入到环境后就会执行那个颇受诟病的脏值检查。既然作用域是原型继承下来的,而且和DOM结构平行,那显然最先应该检查就是,然后传播到所有的子作用域上,这个时候$watch,设置的一些函数,表达式等就会被执行,相应的改变发生的话就应用你设置好的函数等。

摧毁——当我们不在需要一个作用域,需要将它移除掉,原则就是谁创建谁销毁,使用的方法就是$scope.$(),这里如同apply一样,这个方法一要被调用,至于谁调用,参照原则。如果不做呢?good ,不做也不会被枪毙,只是在进行循环时,它仍然会被加入其中,增加性能的开销。执行完这个方法后,它占用的内存才能被释放,进而被当成垃圾回收掉。

以上就是scope整个生命周期,请记住这几个关键词:link,,,apply,,。

关于我们

最火推荐

小编推荐

联系我们


版权声明:本站内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 88@qq.com 举报,一经查实,本站将立刻删除。备案号:桂ICP备2021009421号
Powered By Z-BlogPHP.
复制成功
微信号:
我知道了