angularjs髒機制

Angular 每個綁定到UI的數據,就會有一個 $watch 對象。javascript

watch = {
    name:'',      //當前的watch 對象 觀測的數據名
    getNewValue:function($scope){ //獲得新值
        ...
        return newValue;
        },
    listener:function(newValue,oldValue){  // 當數據發生改變時須要執行的操做
        ...
    }
}

 

每當咱們將數據綁定到 UI 上,angular 就會向你的 watchList 上插入一個 $watch。
好比:{{model}}java

當model的值發生變化時,就發生了一次檢查。ajax

簡單理解,一次髒檢查就是調用一次 $apply() 或者 $digest(),將數據中最新的值呈如今界面上。app

而每次 UI 事件變動,ajax 還有 timeout 都會觸發 $apply()。函數

 

$digest()
檢測當前scope以及子scope中全部的watches,由於監聽函數會在執行過程當中修改model(scope中的變量),$digest()會一直被調用直到model沒有再變。當調用超過10次時,$digest()會拋出一個異常"Maximum iteration limit exceeded',以此來防止程序進入一個死循環。對象

相關文章
相關標籤/搜索