在VM中,改變它們會引起視圖改變的屬性。如果一個屬性是 $ 開頭, 或在 定義時放在$skipArray數組中 ,或是 函數或 節點元素 , 它們 都不會轉換成監控屬性.
此外, 改變監控屬性的值還會觸發對應的$watch 監聽回調.
在avalon早期是, 存在一個對象能mixin進每個VM,讓VM具有$watch, $unwatch, $fire, $events等方法或屬性. 這有點像jQuery的on, off, trigger方法,隻是為了更造近angular等MVVM架構,名字起成這樣.
此方法是用于監聽vm中的對象的屬性變化.
換言之,它不能監聽函數,不能監聽簡單數組的元素變化(如[1,2,3]變成[4,2,3])
它能監聽子級對象的屬性變化,能監聽對象數組的屬性變化(如[{a:1,b:2}]變成[{a:‘change’,b:2}]), 還有數組的長度屬性變化。
var unwatch = vm.$watch("aaa", function observe(a, b) {
expect(a).to.be(6)
expect(b).to.be(2)
})
unwatch() //移除目前$watch回調