1. 程式人生 > 其它 >uniapp返回上一頁攜帶引數,解決子頁面返回父頁面接受資料

uniapp返回上一頁攜帶引數,解決子頁面返回父頁面接受資料

1.起因

本來進入uniapp這個技術時間不長,就碰到一個棘手的問題,v-if與第三方元件庫有衝突,雖然解決了其中一部分的難題,最終我拜倒在了uniapp的淫威之下,只能換另外一種方式進行了,不亂扯了直接進入正題

2.需求描述:

父頁面用定位獲取當前位置,使用者可以進行修改需要點選位置進入另外一個頁面修改地理位置,然後返回父頁面,並且父頁面的操作全部保留我看到這個需求首先想到了父子元件用v-if切換,於是我把自己推進了深淵的開始

3.解決思路:

起初我發現我的方式可行然而在最終馬上完善的時候我發現出了問題,v-if與uview元件衝突,導致自定義校驗初始化問題失效,最終我硬著頭皮解決了這個問題,我沒想到坑都在後面等著我,上線了隨之bug也來,雖然我知道什麼問題導致的也看到部落格園上面解決方案都是v-if換成v-show,但是我發現並不能解決我現有的需求,雖然我喜歡鑽坑我發現這次掉進去實在走不出來了,於是我只能放棄這個坑位,重新換思路,於是我想到了返回上一頁這個功能,但是我並不清楚返回上一頁能否攜帶引數,於是下面的就是我的實現方案了

  第一:既然使用元件不能滿足我的要求,又不能解決我v-if這個問題,實在想不出只能放棄元件,用頁面方式進行了

  第二:我研究了一下小程式的生命週期,我發現到了返回上一頁會觸發生命週期onshow這個生命週期,我發現了一個新大陸

  第二:我想到了我一直寫vue中除了父子元件,我想到了兄弟元件

  第三:直接將我的思路開整 ,父頁面跳子頁面的時候我直接攜帶引數跳轉

//父頁面
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
}) },

這就是我的實現思路,每天進步一點點