こんにちは、macoです。
Vue.jsの値の変更を監視できるwatch機能はすごく便利ですが、連想配列で値を変更した場合にうまく動作しなかったので、解決方法を解説します。
連想配列でwatchが動かない例
watchではuser直下の値は監視できますが、連想配列の小要素までは監視することができません。
// 省略
data: {
user: {
id: 1,
name: 'hoge'
}
},
watch: {
user: function(){
// 実行されない
}
}
// 省略
連想配列でwatchが動く例
handlerの中に処理を入れ、deepというプロパティを追加しました。
// 省略
data: {
user: {
id: 1,
name: 'hoge'
}
},
watch: {
user: {
handler: function(){
// 実行される
},
deep: true
}
}
// 省略
これで無事に連想配列を監視することができました。

