這篇文章主要介紹“vue中如何利用watch監(jiān)聽數(shù)據(jù)變化”的相關(guān)知識,小編通過實際案例向大家展示操作過程,操作方法簡單快捷,實用性強,希望這篇“vue中如何利用watch監(jiān)聽數(shù)據(jù)變化”文章能幫助大家解決問題。
創(chuàng)新互聯(lián)為企業(yè)提供:品牌網(wǎng)站設(shè)計、網(wǎng)絡(luò)營銷策劃、小程序定制開發(fā)、營銷型網(wǎng)站建設(shè)和網(wǎng)站運營托管,一站式網(wǎng)絡(luò)營銷整體服務(wù)。實現(xiàn)不斷獲取潛在客戶之核心目標(biāo),建立了企業(yè)專屬的“全網(wǎng)整合營銷推廣”,就用不著再為了獲取潛在客戶而苦惱,相反,客戶會主動找您,生意就找上門來了!
1、watch使用的幾種方法
(1)通過watch監(jiān)聽data數(shù)據(jù)的變化,數(shù)據(jù)發(fā)生變化時,就會打印當(dāng)前的值
watch: { data(val, newval) { console.log(val) console.log(newval) } }
(2)通過watch監(jiān)聽docData數(shù)據(jù)的變化,數(shù)據(jù)發(fā)生變化時,this.change_number++(使用深度監(jiān)聽)
watch: { docData: { handler(newVal) { this.change_number++ }, deep: true } }
(3)通過watch監(jiān)聽data數(shù)據(jù)的變化,數(shù)據(jù)發(fā)生變化時,執(zhí)行changeData方法
watch: { data: 'changeData' // 值可以為methods的方法名 }, methods: { changeData(curVal,oldVal){ conosle.log(curVal,oldVal) } }
2、詳解watch中的immediate、handler和deep屬性
(1)immediate和handler
這樣使用watch時有一個特點,就是當(dāng)值第一次綁定時,不會執(zhí)行監(jiān)聽函數(shù),只有值發(fā)生改變時才會執(zhí)行。如果我們需要在最初綁定值的時候也執(zhí)行函數(shù),則就需要用到immediate屬性。
eg:
watch: { docData: { handler(newVal) { this.change_number++ }, immediate: true } }
(2)deep
當(dāng)需要監(jiān)聽一個對象的改變時,普通的watch方法無法監(jiān)聽到對象內(nèi)部屬性的改變,此時就需要deep屬性對對象進行深度監(jiān)聽。
eg: data() { return { docData: { 'doc_id': 1, 'tpl_data': 'abc' } } }, watch: { docData: { handler(newVal) { this.change_number++ }, deep: true } }
設(shè)置deep:true則可以監(jiān)聽到docData.doc_id的變化,此時會給docData的所有屬性都加上這個監(jiān)聽器,當(dāng)對象屬性較多時,每個屬性值的變化都會執(zhí)行handler。如果只需要監(jiān)聽對象中的一個屬性值,則可以做以下優(yōu)化:使用字符串的形式監(jiān)聽對象屬性:
eg: data() { return { docData: { 'doc_id': 1, 'tpl_data': 'abc' } } }, watch: { 'docData.doc_id': { handler(newVal, oldVal) { ...... }, deep: true } }
關(guān)于“vue中如何利用watch監(jiān)聽數(shù)據(jù)變化”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識,可以關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,小編每天都會為大家更新不同的知識點。