https://stackoverflow.com/questions/42133894/vue-js-how-to-properly-watch-for-nested-data
You can use a deep watcher for that:
watch: {
item: {
handler(val){
},
deep: true
}
}
EDIT
If you don't want to watch for every change on the top level object, and just want a less awkward syntax for watching nested objects directly, you can simply watch a computed instead:
var vm = new Vue({
el: '#app',
computed: {
foo() {
return this.item.foo;
}
},
watch: {
foo() {
console.log('Foo Changed!');
}
},
data: {
item: {
foo: 'foo'
}
}
})