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',以此來防止程序進入一個死循環。對象