watch在最初綁定的時候是不會執行的,只有綁定的值變化時才會響應監聽,如果我們加上immediate: true;則可以實現返回調用方法,類似於鈎子函數完成的功能。
<div id="main"> <p>obj.a: {{obj.a}}</p> <p>obj.a: <input type="text" v-model="obj.a"></p> </div> new Vue({ el: '#main', data: { obj: { a: 123 } }, watch: { obj: { handler(newValue, oldValue) { console.log('頁面初始即調用'); }, immediate: true } } })
vue是檢測不到對象屬性的添加和刪除的,如果我們想監聽js對象屬性的變化,我們可以用deep: true;來實現,具體代碼和演示結果大家可以嘗試一下。