data:{ a:1, b:{ value:1, type:1, } }, watch:{ a(val, oldVal){//普通的watch监听 console.log("a: "+val, oldVal); }, b:{//深度监听,可监听到对象、数组的变化 handler(val, oldVal){ console.log("b.value: "+val.value, oldVal.value);//但是这两个值打印出来却都是一样的 }, deep:true } }
如果只想监听b中的value,怎么办
方法一:
watch:{ a(val, oldVal){//普通的watch监听 console.log("a: "+val, oldVal); }, 'b.value':{//深度监听,可监听到对象、数组的变化 handler(val, oldVal){ console.log("b.value: "+val.value, oldVal.value);//但是这两个值打印出来却都是一样的 }, deep:true } }
方法二,借助computed
computed: { newNum: function () { return this.b.value } } watch:{ newNum:{ handler(val, oldVal){ console.log(oldVal); }, deep:true } }