$watch、$digest、$apply
$watch 代表的就是对数据源的监听,当数据源发生变化,就会触发第二个参数的回调函数
$digest 代表触发一个数据源变化的事件
$apply 代表对于$digest的一个封装,他多了一个参数
$watch
第一个参数就是要监听的数据源
第二个参数就是当监听的数据源发生变化了,触发的一个回调函数,回调函数包含两个参数,分别代表(新值、旧值)
$digest 是用来手动触发监听事件的,通常不需要手动触发,而是由$apply来调用
$apply 只是把$digest 做了一次封装,来提供手动触发,那么为什么需要手动触发呢,正常情况下,在angular下,修改数据源就会自动触发,但是要是不在angular上下文的情况下,如浏览器DOM事件,setTimeout执行,这种情况下,angular无法获取到事件,所以,通过apply来手动触发一下,在apply的参数中去修改数据源
$observe,他是在定义Directive的时候,针对link的第三个参数attr来做的监听
attr,实际上就是定义的元素上的attribute参数,通过attr可以获取DOM中的参数
通过$observe来进行监听,当参数的值发生变化了,就会触发回调函数,他和watch的不同就是,监听的宿主对象不同
相关文章:
- 理解$watch、$apply和$digest---理解数据绑定过程 2022-12-23
- Angular 学习笔记 :初识 $digest , $watch , $apply,浅析用法 。 2022-12-23
- Angular:手动脏检查/$apply/$digest和监控对象/$watch 2022-12-23
- 谈谈Angular关于$watch,$apply 以及 $digest的工作原理 2022-12-23
- 深入理解$watch ,$apply 和 $digest --- 理解数据绑定过程——续 2022-01-16
- 深入理解angularjs $watch ,$apply 和 $digest --- 理解数据绑定过程 2021-10-27
- angular $apply()以及$digest()讲解 2021-10-22
- AngularJS中的digest循环$apply 2021-06-18