1.起因:
本來進入uniapp這個技術(shù)時間不長,就碰到一個棘手的問題,v-if與第三方組件庫有沖突,雖然解決了其中一部分的難題,最終我拜倒在了uniapp的淫威之下,只能換另外一種方式進行了,不亂扯了直接進入正題
2.需求描述:
父頁面用定位獲取當前位置,用戶可以進行修改需要點擊位置進入另外一個頁面修改地理位置,然后返回父頁面,并且父頁面的操作全部保留我看到這個需求首先想到了父子組件用v-if切換,于是我把自己推進了深淵的開始
3.解決思路:
起初我發(fā)現(xiàn)我的方式可行然而在最終馬上完善的時候我發(fā)現(xiàn)出了問題,v-if與uview組件沖突,導致自定義校驗初始化問題失效,最終我硬著頭皮解決了這個問題,我沒想到坑都在后面等著我,上線了隨之bug也來,雖然我知道什么問題導致的也看到博客園上面解決方案都是v-if換成v-show,但是我發(fā)現(xiàn)并不能解決我現(xiàn)有的需求,雖然我喜歡鉆坑我發(fā)現(xiàn)這次掉進去實在走不出來了,于是我只能放棄這個坑位,重新?lián)Q思路,于是我想到了返回上一頁這個功能,但是我并不清楚返回上一頁能否攜帶參數(shù),于是下面的就是我的實現(xiàn)方案了
第一:既然使用組件不能滿足我的要求,又不能解決我v-if這個問題,實在想不出只能放棄組件,用頁面方式進行了
第二:我研究了一下小程序的生命周期,我發(fā)現(xiàn)到了返回上一頁會觸發(fā)生命周期onshow這個生命周期,我發(fā)現(xiàn)了一個新大陸
第二:我想到了我一直寫vue中除了父子組件,我想到了兄弟組件
第三:直接將我的思路開整 ,父頁面跳子頁面的時候我直接攜帶參數(shù)跳轉(zhuǎn)
//父頁面 onShow() { let that = this uni.$on('updateData', function(data) { that.formdata.locale=data.proof that.formdata.latitude=data.latitude that.formdata.longitude=data.longitude }) }, //方法 methods: { Place() { uni.navigateTo({ url: '../selectMap/selectMap?locale=' +this.formdata.locale + '&latitude=' + this.formdata.latitude + '&longitude=' + this.formdata.longitude }) }, }
//子頁面 onLoad(e) { this.formdata.proof = e.locale this.formdata.latitude = e.latitude this.formdata.longitude = e.longitude this.covers[0].latitude = e.latitude this.covers[0].longitude = e.longitude }, //方法
methods: { //確定方法 setSure() { uni.$emit('updateData', this.formdata) uni.navigateBack({ delta: 1 }) },
這就是我的實現(xiàn)思路,每天進步一點點
浙公網(wǎng)安備 33010602011771號