vue中watch如何同時(shí)監(jiān)聽(tīng)多個(gè)屬性
vue watch同時(shí)監(jiān)聽(tīng)多個(gè)屬性
1. watch監(jiān)聽(tīng)的多個(gè)屬性之間沒(méi)有聯(lián)系(name、list),各自監(jiān)聽(tīng)值改變后執(zhí)行各自的方法,也無(wú)關(guān)順序問(wèn)題;
watch:{
name(newValue, oldValue) {
this.name = newValue
},
list(newVal, oldVal) {
this.list = newVal
}
}2. watch監(jiān)聽(tīng)的多個(gè)屬性之間相互有聯(lián)系(useableCardTypeTime、tableData),并且任何一個(gè)值改變都有可能對(duì)第三個(gè)值(addDisable)產(chǎn)生改變,所以監(jiān)聽(tīng)兩個(gè)屬性的方法中都需要寫(xiě)對(duì)第三個(gè)值的改變操作;
watch:{
useableCardTypeTime(newValue, oldValue) {
if(this.tableData.length >= newValue.length) {
this.addDisable = true
} else {
this.addDisable = false
}
},
tableData(newVal, oldVal) {
if(newVal.length >= this.useableCardTypeTime.length) {
this.addDisable = true
} else {
this.addDisable = false
}
}
}對(duì)于以上多個(gè)屬性之間有關(guān)聯(lián)的問(wèn)題,還有一個(gè)更為簡(jiǎn)便的方式來(lái)解決,即:
使用 computed 和 watch 監(jiān)聽(tīng)相結(jié)合的方式(推薦):
computed: {
listenChange () {
const { useableCardTypeTime, tableData } = this
return { useableCardTypeTime, tableData }
}
},
watch:{
listenChange (val) {
if(val.tableData.length >= val.useableCardTypeTime.length) {
this.addDisable = true
} else {
this.addDisable = false
}
}
}對(duì)于項(xiàng)目中需要一次性監(jiān)聽(tīng)多個(gè)屬性值的變化時(shí),推薦大家使用最后一種方式喔~~~(computed 和 watch 相結(jié)合)
vue watch深度監(jiān)聽(tīng)多個(gè)屬性實(shí)例
watch :{
//監(jiān)聽(tīng)type的變化
'temp.type': {
handler(type,old) {
//這里寫(xiě)你的業(yè)務(wù)邏輯
console.log('obj.a changed', type);
if (type == 1) {
this.temp.title = '速來(lái)↓↓↓'
} else {
this.temp.title = ''
}
},
immediate: true,
// deep: true
},
'temp.liveName': {
handler(liveName,old) {
//這里寫(xiě)你的業(yè)務(wù)邏輯
console.log('obj.a changed', liveName);
if (this.temp.type == 1) {
this.temp.title = " 速來(lái)↓↓↓"
}
},
immediate: true,
// deep: true
}
},watch中的immediate、handler和deep屬性
(1)immediate和handler
這樣使用watch時(shí)有一個(gè)特點(diǎn),就是當(dāng)值第一次綁定時(shí),不會(huì)執(zhí)行監(jiān)聽(tīng)函數(shù),只有值發(fā)生改變時(shí)才會(huì)執(zhí)行。
如果我們需要在最初綁定值的時(shí)候也執(zhí)行函數(shù),則就需要用到immediate屬性。
(2)deep
當(dāng)需要監(jiān)聽(tīng)一個(gè)對(duì)象的改變時(shí),普通的watch方法無(wú)法監(jiān)聽(tīng)到對(duì)象內(nèi)部屬性的改變,此時(shí)就需要deep屬性對(duì)對(duì)象進(jìn)行深度監(jiān)聽(tīng)。
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
- vue?watch監(jiān)聽(tīng)方法總結(jié)
- Vue使用watch監(jiān)聽(tīng)一個(gè)對(duì)象中的屬性的實(shí)現(xiàn)方法
- Vue使用watch監(jiān)聽(tīng)數(shù)組或?qū)ο?/a>
- Vue數(shù)據(jù)監(jiān)聽(tīng)方法watch的使用
- VUE3中watch監(jiān)聽(tīng)使用實(shí)例詳解
- vue中watch監(jiān)聽(tīng)器的觸發(fā)時(shí)機(jī)(watch的坑及解決)
- vue中watch監(jiān)聽(tīng)不到變化的解決
- 詳解Vue3中Watch監(jiān)聽(tīng)事件的使用
- vue監(jiān)聽(tīng)屬性watch的用法及使用場(chǎng)景詳解
相關(guān)文章
vue3如何實(shí)現(xiàn)表格內(nèi)容無(wú)縫滾動(dòng)(又寫(xiě)了一堆冗余代碼)
這篇文章主要給大家介紹了關(guān)于vue3如何實(shí)現(xiàn)表格內(nèi)容無(wú)縫滾動(dòng)的相關(guān)資料,在Vue3項(xiàng)目中難免會(huì)遇到讓列表滾動(dòng)的需求,文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下2024-04-04
Vue.js組件使用props傳遞數(shù)據(jù)的方法
這篇文章主要為大家詳細(xì)介紹了Vue.js組件使用props傳遞數(shù)據(jù)的方法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-10-10
vue實(shí)現(xiàn)多條件篩選超簡(jiǎn)潔代碼
這篇文章主要給大家介紹了關(guān)于vue實(shí)現(xiàn)多條件篩選的相關(guān)資料,隨著數(shù)據(jù)的不斷增多,我們往往需要在表格中進(jìn)行多條件的篩選,以便快速定位符合我們需求的數(shù)據(jù),需要的朋友可以參考下2023-09-09
Vue3請(qǐng)求后端接口實(shí)現(xiàn)方式
本文詳解Vue3中使用Fetch和Axios與后端交互的方法,涵蓋請(qǐng)求發(fā)起、狀態(tài)管理、錯(cuò)誤處理及跨域等解決方案,推薦優(yōu)先使用Axios,其攔截器、自動(dòng)轉(zhuǎn)換等特性提升開(kāi)發(fā)效率,建議封裝實(shí)例與API函數(shù)以統(tǒng)一配置2025-09-09

