在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回调