Vue中偵聽器的基本用法示例
前言
Vue 通過(guò) watch 選項(xiàng)提供了一個(gè)更通用的方法,來(lái)響應(yīng)數(shù)據(jù)的變化。當(dāng)需要在數(shù)據(jù)變化時(shí)執(zhí)行異步或開銷較大的操作時(shí),這個(gè)方式是最有用的。
一、偵聽器的基本用法
<div id="demo">{{ fullName }}</div>
var vm = new Vue({
el: '#demo',
data: {
firstName: 'Foo',
lastName: 'Bar',
fullName: 'Foo Bar' },
watch: {
firstName: function (val) {
this.fullName = val + ' ' + this.lastName },
lastName: function (val) {
this.fullName = this.firstName + ' ' + val } } })
這段代碼的作用就是監(jiān)聽firstName和fullName,當(dāng)它們發(fā)生變化的時(shí)候,就改變fullname的值。
二、偵聽器的格式
方法格式的偵聽器
- 缺點(diǎn)1:無(wú)法在剛進(jìn)入頁(yè)面的時(shí)候,自動(dòng)觸發(fā)!
- 缺點(diǎn)2:如果偵聽的是一個(gè)對(duì)象,如果屬性中的屬性發(fā)生了變化,不會(huì)觸發(fā)偵聽器!
對(duì)象格式的偵聽器
- 好處1:可以實(shí)現(xiàn)剛進(jìn)入頁(yè)面,自動(dòng)觸發(fā)!
- 好處2:可以實(shí)現(xiàn)深度監(jiān)聽,也就是監(jiān)聽對(duì)象中的屬性是否變化!
三、實(shí)現(xiàn)剛進(jìn)入頁(yè)面就觸發(fā)監(jiān)聽和深度監(jiān)聽
剛進(jìn)入頁(yè)面就觸發(fā)監(jiān)聽
通過(guò)添加immediate選項(xiàng)來(lái)實(shí)現(xiàn)
const vm = new Vue({
el: '#app',
data: {
info: {
username: 'admin'
}
},
watch:{
info:{
handle(newVal){
console.log(newVal)
},
// 實(shí)現(xiàn)剛進(jìn)入頁(yè)面就觸發(fā)監(jiān)聽
immediate: true
}
}
})
深度監(jiān)聽
在上述代碼中,當(dāng)username發(fā)生變化時(shí)我們是不能監(jiān)聽成功的,因?yàn)樽兓氖菍?duì)象屬性的值,因此需要深度監(jiān)聽,添加deep選項(xiàng)即可
const vm = new Vue({
el: '#app',
data: {
info: {
username: 'admin'
}
},
watch:{
info:{
handle(newVal){
console.log(newVal)
},
// 實(shí)現(xiàn)剛進(jìn)入頁(yè)面就觸發(fā)監(jiān)聽
immediate: true,
// 實(shí)現(xiàn)深度監(jiān)聽,只要對(duì)象中的任何一個(gè)屬性變化了,都會(huì)觸發(fā)“對(duì)象的偵聽”
deep: true
}
}
})
深度監(jiān)聽返回偵聽對(duì)象子屬性的值
上述代碼中執(zhí)行結(jié)果是打印info這個(gè)對(duì)象,我們希望打印的username的值,需要加上newVal.username還是比較麻煩的,我們其實(shí)可以直接監(jiān)聽并打印變化子屬性的值,只需要在要監(jiān)聽的子屬性外面加上一層單引號(hào)即可:
const vm = new Vue({
el: '#app',
data: {
info: {
username: 'admin'
}
},
watch:{
'info.username': {
handle(newVal){
console.log(newVal)
}
}
}
})
最后
⚽本文介紹了Vue中的偵聽器的基本使用以及如何實(shí)現(xiàn)深度監(jiān)聽,希望大家閱讀完有一定的收獲呦~
到此這篇關(guān)于Vue中偵聽器基本用法的文章就介紹到這了,更多相關(guān)Vue偵聽器用法內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
vue中使用gantt-elastic實(shí)現(xiàn)可拖拽甘特圖的示例代碼
這篇文章主要介紹了vue中使用gantt-elastic實(shí)現(xiàn)可拖拽甘特圖,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-07-07
Vue3實(shí)現(xiàn)富文本內(nèi)容導(dǎo)出為Word文檔
這篇文章主要為大家詳細(xì)介紹了Vue3如何通過(guò)純前端方案將富文本內(nèi)容直接導(dǎo)出為符合中文排版規(guī)范的 Word 文檔,有需要的小伙伴可以參考下2025-03-03
Vue?項(xiàng)目運(yùn)行完成后自動(dòng)打開瀏覽器的方法匯總
這篇文章主要介紹了Vue?項(xiàng)目運(yùn)行完成后自動(dòng)打開瀏覽器的多種實(shí)現(xiàn)方法,方法一比較適用于vue3,每種方法通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧2022-02-02
淺談ElementUI el-select 數(shù)據(jù)過(guò)多解決辦法
下拉框的選項(xiàng)很多,上萬(wàn)個(gè)選項(xiàng)甚至更多,這個(gè)時(shí)候如果全部把數(shù)據(jù)放到下拉框中渲染出來(lái),瀏覽器會(huì)卡死,體驗(yàn)會(huì)特別不好,本文主要介紹了ElementUI el-select 數(shù)據(jù)過(guò)多解決辦法,感興趣的可以了解一下2021-09-09
elementui?el-select?change事件傳參問(wèn)題
這篇文章主要介紹了elementui?el-select?change事件傳參問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-01-01
關(guān)于el-form表單驗(yàn)證中的validator與validate使用時(shí)的問(wèn)題
這篇文章主要介紹了關(guān)于el-form表單驗(yàn)證中的validator與validate使用時(shí)的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-06-06
vue axios請(qǐng)求成功卻進(jìn)入catch的原因分析
這篇文章主要介紹了vue axios請(qǐng)求成功卻進(jìn)入catch的原因分析,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-09-09

