zoukankan      html  css  js  c++  java
  • angular 数据同步

    1.数据绑定

    angular属于MVVM模式,视图更新后自动更新数据模型,数据模型更新后自动更新视图。

    2.脏值检测

    $watch:检测模型和视图是否同步,若没有同步,它将会使用新值来更新模型数据。即监控变量的变化,若变量值发生变化,执行$watch。

    $digest:触发当前作用域和它的子作用域上的$watch。

    $apply:触发整个作用域树上的所有$watch。

    $watch队列:在模板上绑定一个东西,就会往$watch队列里插入一条$watch。

    $digest循环:由两个更小的循环组合起来的,一个处理evalAsync队列,另一个处理$watch队列。$digest会遍历$watch队列(即脏值检测),更新模型的值。一次遍历完$watch队列后,若有$watch更新,重新开始遍历$watch队列,... 直到遍历$watch队列没有更新(如果遍历超过10次,它会抛出一个异常,防止无限循环)循环结束。循环结束后,根据模型的值更新DOM。可以使用$apply方法,触发整个树状作用域的$digest循环。

    图1 脏值检测

     

    3.触发脏值检测($apply或$digest)

    (1)  自动触发

           setTimeout、click事件等。

    (2)手动触发

           a.调用$apply b.调用$digest

    [1]http://www.angularjs.cn/A0a6

  • 相关阅读:
    两道挺有意思的思考题
    IEEE浮点数表示法
    MD5 Bump Mapping
    MD5 PolyBump + DetailBump
    DOOM3 MD5渲染方式的另一种猜测
    Relief Mapping
    如何计算投影纹理坐标
    Toon Shading, step 3
    c++数组初始化赋值
    c++重载部分运算符以及输入输出运算符
  • 原文地址:https://www.cnblogs.com/fe-huahai/p/5610791.html
Copyright © 2011-2022 走看看