zoukankan      html  css  js  c++  java
  • angularjs脏机制

    Angular 每一个绑定到UI的数据,就会有一个 $watch 对象。

    watch = {
        name:'',      //当前的watch 对象 观测的数据名
        getNewValue:function($scope){ //得到新值
            ...
            return newValue;
            },
        listener:function(newValue,oldValue){  // 当数据发生改变时需要执行的操作
            ...
        }
    }
    

     

    每当我们将数据绑定到 UI 上,angular 就会向你的 watchList 上插入一个 $watch。
    比如:{{model}}

    当model的值发生变化时,就发生了一次检查。

    简单理解,一次脏检查就是调用一次 $apply() 或者 $digest(),将数据中最新的值呈现在界面上。

    而每次 UI 事件变更,ajax 还有 timeout 都会触发 $apply()。

    $digest()
    检测当前scope以及子scope中所有的watches,因为监听函数会在执行过程中修改model(scope中的变量),$digest()会一直被调用直到model没有再变。当调用超过10次时,$digest()会抛出一个异常"Maximum iteration limit exceeded',以此来防止程序进入一个死循环。

     
  • 相关阅读:
    Codeforces Gym 101138 D. Strange Queries
    BZOJ 4236: JOIOJI
    BZOJ 2654: tree
    POJ 1390 Block
    2048
    BZOJ 2412: 电路检修
    BZOJ 2448: 挖油
    BZOJ 3907: 网格
    Codeforces 727 D T-shirts Distribution
    BZOJ 1485: [HNOI2009]有趣的数列
  • 原文地址:https://www.cnblogs.com/8080zh/p/9303311.html
Copyright © 2011-2022 走看看