zoukankan      html  css  js  c++  java
  • 4-16 脏值检测(2)

    小实战来看下增值检测的原理。
    我们需要新建两个组件和路由。

    在Home下的components组件上新建parent和child这两个组件。




    child







    在HomeModule中声明

    添加路由


    在parent中调用child组件。

    注意要修改浏览器的地址。

    给child加一个属性
    用get方法当成一个计算型的属性。因为我们要在这里打印日志,一般普通的属性没有办法打印日志。





    这里我们用这种写法







    然互输入function checkandupdate

    这样就可以定位到这里。这个函数就是angular用来做脏值监测的

    在这里加个断点

    然后刷新页面



    空的原因是承载根组件的地方。其实就是这里。

    在它的nodes里面有个app-root 这是根组件。


    往下走就到了下一个容器

    再往下走,找到这个路由了


    继续往下走。找到了ParentComponent

    再走找到了ChildComponent

    先把断点去掉

    在checkAndUpdateBingding这个函数。再加个断点,然后刷新页面。

    刷新页面,进入到断点。它把一个新的值存进来,和老的值进行比较。

    把新的值赋值给老的值


    可以看到console里面脏值监测 打印了两次

    也就意味着它读了两次title,也就是检查了两次。第一次检测后立马进行了第二次监测。第二遍检查不是完整的检查,而是看这些值变没变化。
    第一遍把新值已经赋值上。第二遍再去检查看看有没有变化。如果还有变化的话,那就可能导致我无线循环下去了。变成一个死循环了。

    如果这个时候我们在ngAfterViewChecked里面去改变title的值。这个时候就会出现异常。

    会抛出异常。


     

    结束

  • 相关阅读:
    用户使用调查报告
    Beta总结
    Beta冲刺Day7
    Beta冲刺Day6
    Beta冲刺Day5
    Beta冲刺Day4
    Beta冲刺Day3
    Beta冲刺Day2
    Beta冲刺Day1
    Beta预备
  • 原文地址:https://www.cnblogs.com/wangjunwei/p/13584068.html
Copyright © 2011-2022 走看看