watch監(jiān)聽在后來的項(xiàng)目中需深度監(jiān)聽,比如對(duì)象下面的某一個(gè)屬性變化了刽辙,需要執(zhí)行一些方法
還有的需求是頁面首次進(jìn)來窥岩,雖然沒有數(shù)據(jù)變化,但是希望執(zhí)行監(jiān)聽里面的代碼
var vm = new Vue({
data: {
a: 1,
b: 2,
c: 3,
d: 4,
e: {
f: {
g: 5
}
}
},
watch: {
a: function (val, oldVal) {
console.log('new: %s, old: %s', val, oldVal)
},
// 方法名
b: 'someMethod',
// 深度 watcher 這種使用于對(duì)象下面的某個(gè)屬性的深度監(jiān)聽
c: {
handler: function (val, oldVal) { /* ... */ },
deep: true
},
// 該回調(diào)將會(huì)在偵聽開始之后被立即調(diào)用
d: {
handler: function (val, oldVal) { /* ... */ },
immediate: true
},
e: [
function handle1 (val, oldVal) { /* ... */ },
function handle2 (val, oldVal) { /* ... */ }
],
// watch vm.e.f's value: {g: 5}
'e.f': function (val, oldVal) { /* ... */ }
}
})
vm.a = 2 // => new: 2, old: 1
但是在真實(shí)的項(xiàng)目開發(fā)中宰缤,監(jiān)聽對(duì)象下面的某些屬性是偶發(fā)性的不生效颂翼,到目前都沒有找到問題的原因;現(xiàn)在能解決的辦法就是把對(duì)象下面的屬性單獨(dú)出來作為一個(gè)屬性由父組件傳進(jìn)子組件可暫時(shí)解決