<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
本文主要是積累一下在使用前端的watch開發過程中遇到的問題點和經驗。
根據本人的理解,它就是一個監聽器,就是說監聽的某個資料發生了變化,那麼它就會執行相對應的函數。它主要使用在哪些場景呢,比如:一個資料影響著多個資料的業務。
watch:{ // 當這個workType發生改變時,就是1個資料的改變,就會影響到type5和foll的改變 'queryParams.workType':function (newName,oldName){ if(newName==1){ this.type5 = this.type3, this.foll = true }else if(newName==2){ this.type5 = this.type4, this.foll = false } } },
程式碼如下:
watch: { isLoading (newVal, oldVal) { //1. 原來的值,和現在的值,是否有變化,如果有變化,觸發這個函數 console.log('2 isLoading newVal is ', newVal, ' , oldVal is ', oldVal) //2. 當載入完成時, 還需要判斷使用者是否已登入 const username = getLoginedUsername(this.$store) if (username != undefined && username != null) { // 已登入時, 跳轉首頁 toHomePage(this) } } }, computed: { isLoading () { return isLoading(this.$store) } }, import { isLoading, getLoginedUsername } from 'utils/utils'
1.data的程式碼如下:
data() { return { verifyData: this.propData, editBoxShow: false, type3: [{ worksRegion: '0', label: '牛奶' },{ worksRegion:"1", label: "麵包" }, { worksRegion:"3", label: "水果" } ], type4: [{ worksRegion: '0', label: '炸雞' },{ worksRegion:"1", label: "漢堡" },{ worksRegion:"2", label: "可樂" }, { worksRegion:"3", label: "北京烤鴨" } ], type5:[], queryParams:{ id:"", workType:'',//1開發 , 2 測試 foll:true }, }; }
2.watch的監聽
watch:{ // 當這個workType發生改變時,就是1個資料的改變,就會影響到type5和foll的改變 'queryParams.workType':function (newName,oldName){ if(newName==1){ this.type5 = this.type3, this.foll = true }else if(newName==2){ this.type5 = this.type4, this.foll = false } } },
3.場景效果描述
比如: 第1個選框:開發;
第2個選框: A,B,C
比如: 第1個選框:測試;
第2個選框: A,B,C,D
由上所示,當第1個選框,選擇“開發”選項時,則第2個選框出現的選項內容為ABC;當第1個選框,選擇“測試”選項時,則第2個選框出現的選項內容為ABCD;這時就實現了當初的上一個不同選項出現下一個不同的選項內容的效果了。
原理描述:它是主要是通過判斷queryParams的裡面的workType的引數的變化,來進行監聽的,如果當用戶點了開發這個選項,那麼這個workType的newName就是1了,所以就觸發了watch裡面的這個函數了,那麼這裡就可以進行業務方面的處理即可。
說明: handler: 固定方法觸發 deep: 開啟深度監聽 immediate: 頁面初始化時handler立即執行一次 data(){ return { user: { userNo: "", sex: "" } } }, // 監聽整物件 watch: { // 監聽整個物件,物件裡的每個屬性值的變化都會執行handler,執行後獲取的 newVal 值和 oldVal 值是一樣的 user: { handler(newVal, oldVal){ console.log(newVal, oldVal); }, deep: true, immediate: true } } watch: { // 監聽物件的某個屬性,被監聽的屬性值發生變化就會執行函數,但獲取的 newVal 值和 oldVal 值不一樣 'user.userNo': { handler(newVal, oldVal){ console.log(newVal, oldVal); }, deep: true, immediate: true } }
watch: { traysNos (newVal, oldVal) { if ((newVal && !oldVal) || (newVal && oldVal && newVal !== oldVal)) { this.filterDeliverysOutLists = [] this.deliverysOutsList = this.fullsDeliverysOutsLists } } },
data () { return { loading: false, submitsCheck: true, } }, watch: { 'order.traysNos' (val) { if (val == null || val == '') { this.submitsCheck = true } else if (val) { this.submitsCheck = false } } },
watch: { reservesNo (newVal, oldVal) { if ((newVal && !oldVal) || (newVal && oldVal && newVal !== oldVal)) { this.reservesNo = newVal // 獲取到新值 this.$router.replace({ // 跳轉,注意,這種跳轉,是不可以回退的 query: { reservesNo: this.reservesNo // 傳新值 } }) this.findOrderNo() // 執行其他的函數 } } },
這個主要是深度監聽的使用,如何監聽某個物件中的某個屬性的變化,就是上面這個案例,看業務需求來進行使用。
如果只是監聽單個簡單的資料,使用watch的簡寫形式就可以滿足需求。
程式碼如下:
<script> export default { name: "Home", data() { return { text: "" }; }, watch: { text(newVal, oldVal) { } }, }; </script>
本文主要是積累一下在使用前端的watch開發過程中遇到的問題點和經驗。
到此這篇關於vue中watch的實際開發筆記的文章就介紹到這了,更多相關vue中watch開發內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45