一、首先確認watch是一個對象,一定要當做對象來用
watch:{
}
對象:有鍵,有值。
1、鍵:就是你要監控的那個家伙,比如說$route,這個就是要監控路由的變化。或者是data中的某個變量。
2、值:
① 可以是【函數】:就是當你監控的家伙變化時,需要執行的函數,這個函數有兩個形參,第一個是當前值,第二個是變化后的值。
② 可以是【函數名】:不過這個函數名要用單引號來包裹。
③ 可以是【包括選項的對象】:選項包含有三個,如下:
a. 第一個handler:其值是一個回調函數。即監聽到變化時應該執行的函數
b. 第二個是deep:其值是true或false;確認是否深入監聽。(一般監聽時是不能監聽到對象屬性值的變化的,數組的值變化可以監聽到,因此:數據的改變不需要使用深度watch)
c. 第三個是immediate:其值是true或false,確認是否以當前的初始值執行handler的函數
var vm = new Vue({
data:{
a:1,
b:2,
c:3
},
watch:{
//值:函數
a:function(val, oldVal) {
console.log('new: %s, old: %s', val, oldVal)
},
//值:方法名
b:'someMethod',
//選項的對象
c:{
handler:function(val, oldVal){
console.log(val, oldVal)
},
deep: true,
immediate: true
}
}
});
參考地址:https://blog.csdn.net/wangxiaoxiaosen/article/details/78487089
https://blog.csdn.net/itkingone/article/details/69568498
https://blog.csdn.net/zhuming3834/article/details/79726929
