使用watch監(jiān)聽(tīng)對(duì)象里面值的變化
watch監(jiān)聽(tīng)對(duì)象里面值的變化
后臺(tái)管理有時(shí)候有選擇選擇框的不同選項(xiàng),會(huì)影響下一個(gè)選擇框的內(nèi)容,如下圖
.這個(gè)時(shí)候就可以用到watch監(jiān)聽(tīng)
1.樣式代碼
<div class="list"> 訂單類型: <el-select v-model="getorderType" placeholder="請(qǐng)選擇" @change="getchange"> <el-option v-for="item in options1" :key="item.orderType" :label="item.label" :value="item.orderType"> </el-option> </el-select> </div> <div class="list"> 操作對(duì)象: <el-select v-model="getworksRegion" placeholder="請(qǐng)選擇" @change="getchange1"> <el-option v-for="item in options6" :key="item.worksRegion" :label="item.label" :value="item.worksRegion"> </el-option> </el-select> </div>
2.data里的代碼
data() { return { verifyData: this.propData, editBoxShow: false, options1: [{ orderType: '1', label: '首次出售' },{ orderType:"2", label: "二次及以上掛售" } ], options2: [{ worksRegion: '0', label: '原創(chuàng)作品' },{ worksRegion:"1", label: "首頁(yè)大IP" }, { worksRegion:"3", label: "盲盒" } ], options5: [{ worksRegion: '0', label: '原創(chuàng)作品' },{ worksRegion:"1", label: "首頁(yè)大IP" },{ worksRegion:"2", label: "官方藏品" }, { worksRegion:"3", label: "盲盒" } ], options6:[], queryParams:{ id:"", orderType:'',//1 正常訂單(首次出售), 2 掛售訂單(二次及以上掛售) worksRegion:"",// 0 原創(chuàng) 1 平臺(tái)首發(fā) 2 官方藏品 3 盲盒 }, getorderType:"", getworksRegion:"", }; },
3.watch監(jiān)聽(tīng)
watch:{ 'queryParams.orderType':function (newName,oldName){ if(newName==1){ this.options6 = this.options2 }else if(newName==2){ this.options6 = this.options5 } } },
重點(diǎn)監(jiān)聽(tīng)對(duì)象的形式為
? watch:{ ? ? 'queryParams.orderType':function (newName,oldName){//newName 新數(shù)據(jù) oldName 老數(shù)據(jù) ? ? ?? ? ? } ? },
對(duì)以上例子和代碼進(jìn)行理解,就可以理解watch監(jiān)聽(tīng)對(duì)象里的值的變化。
watch如何深度監(jiān)聽(tīng)對(duì)象變化
深度監(jiān)聽(tīng)
handler
:其值是一個(gè)回調(diào)函數(shù)。監(jiān)聽(tīng)到變化時(shí)應(yīng)該執(zhí)行的函數(shù)。deep
:其值是true或false;確認(rèn)是否深入監(jiān)聽(tīng)。(一般監(jiān)聽(tīng)時(shí)是不能監(jiān)聽(tīng)到對(duì)象屬性值的變化的,數(shù)組的值變化可以聽(tīng)到。)immediate
:其值是true或false;確認(rèn)是否以當(dāng)前的初始值執(zhí)行handler的函數(shù)。
當(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)
watch: { ? ? obj: { ? ? ? handler(newValue, oldValue) { ? ? ? ? console.log(newValue.id); ? ? ? ? this.formData.fid = newValue ? newValue.id : 0; ? ? ? }, ? ? ? deep: true, ? ? ? immediate: true ? ? } ? },
需要注意得到是 handler 是固定寫法,不能用其他的。
immediate表示在watch中首次綁定的時(shí)候,是否執(zhí)行handler,值為true則表示在watch中聲明的時(shí)候,就立即執(zhí)行handler方法,值為false,則和一般使用watch一樣,在數(shù)據(jù)發(fā)生變化的時(shí)候才執(zhí)行handler。
上面的視圖里 之所以刷新馬上就執(zhí)行了 handler函數(shù),就是因?yàn)樵O(shè)置了 immediate 屬性為 true
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
詳解vue 中使用 AJAX獲取數(shù)據(jù)的方法
本篇文章主要介紹了詳解vue 中使用 AJAX獲取數(shù)據(jù)的方法,在VUE開(kāi)發(fā)時(shí),數(shù)據(jù)可以使用jquery和vue-resource來(lái)獲取數(shù)據(jù),有興趣的可以了解一下。2017-01-01vue通過(guò)數(shù)據(jù)過(guò)濾實(shí)現(xiàn)表格合并
這篇文章主要為大家詳細(xì)介紹了vue通過(guò)數(shù)據(jù)過(guò)濾實(shí)現(xiàn)表格合并,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-07-07vue項(xiàng)目打包發(fā)布后接口報(bào)405錯(cuò)誤的解決
這篇文章主要介紹了vue項(xiàng)目打包發(fā)布后接口報(bào)405錯(cuò)誤的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-07-07vue?頁(yè)面卡死,點(diǎn)擊無(wú)反應(yīng)的問(wèn)題及解決
這篇文章主要介紹了vue?頁(yè)面卡死,點(diǎn)擊無(wú)反應(yīng)的問(wèn)題及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-10-10vue中復(fù)用vuex.store對(duì)象的定義
這篇文章主要介紹了vue中復(fù)用vuex.store對(duì)象的定義,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-09-09