欧美一区二区三区,国内熟女精品熟女A片视频小说,日本av网,小鲜肉男男GAY做受XXX网站

vue deep監聽

洪振霞1年前8瀏覽0評論

vue在開發過程中,我們常常需要監聽對象深層次的變化。Vue.js提供了一個功能強大的響應式系統,任何的數據改變都會被監聽到并自動更新相關的DOM。然而,如果我們對一個數組或對象進行修改,Vue.js默認的Watcher并不能監聽到這些改變,這就導致了部分的不便。針對這個問題,Vue.js提供了一個叫做deep watcher的技術,可以方便地監聽對象的改變。

//例1
let vm = new Vue({
data: {
obj: {
name: 'John',
age: 18,
address: {
city: 'New York',
street: 'ABC Street'
}
}
},
watch: {
obj: {
handler: function(val, oldVal) {
console.log('obj changed!');
},
deep: true
}
}
});
vm.obj.name = 'Mike';   //輸出'obj changed!'
vm.obj.address.city = 'Los Angeles';  //輸出'obj changed!'

在上面的例子中,我們定義了一個對象obj,它包含兩個簡單的變量和一個新的對象地址變量。在實例的watch屬性中,添加了一個對這個obj對象的監測,當obj中任何值被修改時,console上會輸出'obj changed!'。由于deep標志位為true,對obj地址變量任何地方的修改都會被監聽。無論是直接修改內部的變量,還是直接修改address的值,都會觸發deep watcher并輸出對應的信息。

//例2
let vm = new Vue({
data: {
arr: [1, 2, [3, 4], 5]
},
watch: {
arr: {
handler: function(val, oldVal) {
console.log('arr changed!');
},
deep: true
}
}
});
vm.arr[1] = 3;   //輸出'arr changed!'
vm.arr[2][0] = 6;  //輸出'arr changed!'

在第二個例子中,我們定義了一個數組arr,它包括了幾種不同類型的值。同樣地,在實例的watch屬性中添加了一個對這個arr數組的監測。無論是直接修改數組元素,還是修改數組元素的子元素(即數組的地址變量),都會觸發deep watcher并輸出相應的信息。這種監聽技術可以實現深層次的數據監聽,方便用戶處理復雜數據結構的變化。