<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
uni-app 開發微信小程式,介面中點選左上角的返回按鈕或者是系統自帶的虛擬返回操作,返回前監聽使用者是否在頁面內進行了相應操作,如果有則進行提示(提示使用者是否確定要返回),如果沒有則直接返回。
uni-app 頁面生命週期中有 onBackPress ,不過不支援微信小程式。
翻看微信小程式官方檔案,並未發現可以監聽到左上角返回按鈕的事件。
查閱相關技術檔案,確認微信小程式現階段並沒有提供監聽左上角返回事件的函數。
頁面A進入到頁面B,使用者在頁面B進行了一些操作(比如到頁面C選擇了一些專案新增到了頁面B),這時候使用者從頁面B返回(觸發左上角返回按鈕或者系統自帶的返回事件)。
由於使用者進行了操作,產生了滯留資料,這個資料存在了storage裡面。
假設使用者的返回是無意的,我們需要在使用者返回頁面A時進行一個確認,即彈出提示框,讓使用者看到這個操作會清空掉他剛才所選的專案。
如果使用者確認是要返回,即返回頁面A,並清空該storage。
如果使用者取消返回,即誤觸了返回按鈕等原因,這時候取消返回事件,頁面停留在頁面B,資料storage保留。
頁面A onshow 生命週期內監聽 從 頁面B 返回來的資料,即storage是否有值。
頁面A:
onShow(){ let choose = uni.getStorageSync('product'), //頁面B快取的資料 obj = uni.getStorageSync('backsure'); //頁面B需要用到的資料(根據實際專案開發) if(choose.length){ uni.showModal({ title: '提示', content: '當前頁面有未儲存的資料,您確定要取消嗎?', success: function (res) { if (res.confirm) { uni.setStorageSync('product',''); } else if (res.cancel) { uni.navigateTo({ url: './pageB?data=' + obj.data }) } } }); } }, methods:{ topageB(){ let backsure = { data : this.data //頁面B需要用到的資料 }; uni.setStorageSync('backsure',backsure); uni.navigateTo({ url: './pageB?data=' + this.data }); } }
注意:此處的 backsure 僅僅是頁面B所需要用到的資料(即 在onLoad()生命週期需要用到), 根據實際情況選擇是否需要加上這個storage。 判斷依據依然是頁面B返回頁面A的時候 product 這個storage是否有值。
頁面B 使用custom 自定義導航欄,不使用微信小程式預設的導航欄。
1、重寫頁面B 頂部的導航欄,適配所有機型,參考api :uni.getSystemInfo()。
2、給左上角返回按鈕定義點選事件,判斷是否確認返回。
3、為防止使用者使用系統返回,頁面A需要重複方案一的步驟。
頁面 B:
//頂部導航欄 <view class="custom_top" :style="{height:top_height+40+'px'}"> <label class="iconMoney icons iconarrow-left" @click="toback"></label> <text>{{thetitle}}</text> </view> //生命週期中賦值導航欄高度 onLoad(){ let that = this; uni.getSystemInfo({ success(res) { that.top_height = res.statusBarHeight; //data中 宣告 top_height:0 } }); } //methods方法 toback(){ let choose = uni.getStorageSync('product'); if(choose.length){ uni.showModal({ title: '提示', content: '當前頁面有未儲存的資料,您確定要取消嗎?', success: function (res) { if (res.confirm) { uni.navigateBack(); uni.setStorageSync('product',''); } } }); }else{ uni.navigateBack(); } }
頁面A同方案一相同。
此方案可以實現點選左上角返回按鈕的時候在當前頁面(頁面B)中彈框提示使用者, 而方案一中僅僅是在頁面B已經返回到頁面A後再觸發了提示。
這裡頁面A實現的是對使用者用系統的返回按鍵時, 由於小程式無法監聽到返回事件, 所以只能是重寫需要返回的頁面B的頂部導航欄, 然後給自定義的返回按鈕加上點選事件, 實現當前頁面彈框提示。
1、微信小程式官方尚未提供返回的監聽函數,這是目前可以解決問題的最佳方法(如果有其他的歡迎留言討論)
2、如果對頁面B已經返回到頁面A後再提示沒有異議,那可以直接採用方案一,更直接,功能需求也可以實現。
3、方案二是對方案一的補充,同時會更替掉原生的微信小程式導航欄,需要手寫程式碼適配機型。
到此這篇關於關於uniapp微信小程式左上角返回按鈕監聽的文章就介紹到這了,更多相關uniapp小程式返回按鈕監聽內容請搜尋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