监视属性watch
当被监视的属性变化时,回调函数自动调用,进行相关操作;
监视的属性必须存在,才能进行监视!!(除了data属性,computed属性也能监视)
监视的两种写法
new Vue时传入watch配置;
通过vm.$watch监视;
watch配置属性
immediate (立即的) 初始化时让handlder调用一下
handler(newVal, oldVal) 当监视的属性发生改变的时候调用,参数可以拿到改变前后的值
deep 深度监听,可以监测多层级数据的改变
深度监视
Vue中的watch默认不监测对象内部值的变化(监测一层)
配置deep:true可以监测对象内部值变化(监测多层)
Vue默认是可以监视到多层级数据的改变的(修改number.a页面发生改变可以看出)。但是watch属性默认是不可以的,要想可以就得打开深度监视(为了效率)。
使用watch时根据数据的具体结果,决定是否采用深度监视。
watch对比computed
computed能完成的功能,watch都能完成。
watch能完成的功能,computed不一定能完成,例如:watch可以进行异步操作。(点击按钮让a过一秒+1,)
所有被Vue管理的函数,最好写成普通函数,这样this的指向才是vm 或 组件实例对象。
所有不被Vue所管理的函数(定时器的回调函数、ajax的回调函数、Promise的回调函数等),最好写成箭头函数,这样this的指向才是vm 或 组件实例对象。