當watch的值是一個引用類型
的形耗,如Array Object
這種闻妓,是監(jiān)測不到變化的双谆。
方法:
-
第一步: 設置深度監(jiān)聽
deep: true
watch: { testData: { handler: (newVal, oldVal) => { console.log('我變化了', newVal, oldVal) }, deep: true } }
這樣已經(jīng)能監(jiān)聽到數(shù)據(jù)發(fā)生變化了返干,但是打印的 newVal oldVal是一樣的兴枯。因為他們的數(shù)據(jù)同源,引用指針指向是一樣的犬金。
-
第二步:配合computed
watch:{ testData: { handler: function (newVal, oldVal) { let obj = JSON.parse(newVal); let obj2 = JSON.parse(oldVal); console.log(obj, obj2) }, deep: true } }, comouted:{ testData(){ return JSON.parse(JSON.stringify(this.testData)) // 此處我的理解就是念恍,序列化反序列化后 返回了一個新的對象,而不是在原對象改屬性晚顷。 } } // 思路:就是將我們需要的值進行序列化和反序列化峰伙。這樣打印出的值就是我們想要的了。