(1)$watch
是一個scope
函數,用於監聽模型變化,當你的模型部分發生變化時它會通知你,
$watch(watchExpression, listener,
objectEquality);
watchExpression:監聽的對象,它可以是一個angular表達式如'name',或函數如function(){return
$scope.name}
。
listener:當watchExpression
變化時會被調用的函數或者表達式,它接收3個參數:newValue
(新值), oldValue
(舊值), scope
(作用域的引用)
objectEquality:是否深度監聽,如果設置爲true,它告訴Angular檢查所監控的對象中每一個屬性的變化.
如果你希望監控數組的個別元素或者對象的屬性而不是一個普通的值, 那麼你應該使用它
(2)在上一篇博客中,動態增加的控件,怎麼通過$watch來監聽?
大家通常遇到的情況爲通過$watch()
一次監聽一個值的變化,當然這種時候滿足絕大部分情況。
但是通過閱讀官網對於$watch()
的解釋,$watch()
還有第三個參數,第三個參數是一個布爾類型,表示是否深度監聽,
深度監聽的例子就是是否進行比較對象的屬性。
將動態增加的控件,反映到一個模型裏面DataModel,然後利用$watch監控這個DataModel,
並將$watch函數的第三個參數設置爲true,進行深度監聽,那麼新增加或刪除的控件就能夠被監控,並影響模型DataModel