deep watch
のオプション
を使った書き方はドキュメントに掲載されているのですが、$watch
でdeep watch
する方法は載っていないような気がするのでメモ。
デモ
解説
$watch
の引数として{deep: true}
と書けば、deep watch
してくれます。
var app = new Vue({
el: 'body',
data: {
items: [
{ text: 'A'},
{ text: 'B'}
]
},
watch: {
'items': {
handler: function (val, oldVal) {
console.log('watch 1', 'newval: ', val, ' oldVal:', oldVal)
},
deep: true
}
}
})
app.$watch('items', function(val ,oldVal){
console.log('watch 2', 'newval: ', val, ' oldVal:', oldVal)
}, {deep: true})
使い道
$watch
で書くとスマートじゃないような気もしますが、メインプログラムとは全く違うところでささっと書きたいときに使えます。
動作はしますが、これが正しい書き方かは不明
なので、注意して使うようにします。