uniapp中uni.navigateBack返回后刷新頁面數(shù)據(jù)的實(shí)現(xiàn)
一、前言
在移動(dòng)端中,數(shù)據(jù)列表中某項(xiàng)數(shù)據(jù)點(diǎn)擊編輯,進(jìn)入下一個(gè)頁面編輯數(shù)據(jù),保存后回退到數(shù)據(jù)列表頁,此時(shí)需要刷新列表數(shù)據(jù),否則顯示的列表數(shù)據(jù)還是舊的。這種場景感覺很多地方都有出現(xiàn),是需要詳細(xì)說說方法,也就是uniapp中uni.navigateBack返回后刷新頁面數(shù)據(jù)。
1.1、uni.navigateBack

二、方法
2.1、父頁面設(shè)置鉤子函數(shù)onBackPress
詳細(xì)文檔可點(diǎn)擊【跳轉(zhuǎn)】,適用于刷新多處數(shù)據(jù)
export default {
onBackPress(options) {
this.refreshData();
},
methods:{
refreshData: function() {
//加載數(shù)據(jù)
}
}
}

2.2、uni.$emit和uni.$on監(jiān)聽通知數(shù)據(jù)變更
2.2.1、子頁面
子頁面在需要返回上一頁面的地方寫入uni.navigateBack,然后在success回調(diào)中uni.$emit發(fā)送數(shù)據(jù)更新通知
uni.navigateBack({
delta: 1, // 返回層數(shù),2則上上頁
success() {
uni.$emit('update',{msg:'頁面更新'})
}
})
2.2.2、父頁面
父頁面在初始化時(shí)uni.$on監(jiān)聽數(shù)據(jù)更新,在回調(diào)函數(shù)中處理數(shù)據(jù)。在頁面銷毀時(shí)移除監(jiān)聽
export default {
mounted() {
uni.$on('update', function(data) {
//觸發(fā)更新后
})
},
//為了優(yōu)化代碼,可以加上移除事件,避免重復(fù)監(jiān)聽事件
onUnload() {
// 移除監(jiān)聽事件
uni.$off('update');
}
}
2.3、onShow鉤子函數(shù)處理數(shù)據(jù)
2.3.1、子頁面
準(zhǔn)備回退到上一頁之前,將上一頁的是否刷新參數(shù)值改為是的狀態(tài)
let pages = getCurrentPages();
let prevPage = pages[pages.length - 2]; // 上一個(gè)頁面
// 直接調(diào)用上一個(gè)頁面的setData()方法,把數(shù)據(jù)存到上一個(gè)頁面中去
prevPage.setData({
isRefresh: 1
})
// 再根據(jù)需求,確定返回上一頁面
uni.navigateBack({
delta: 1
})
2.3.2、父頁面
在onShow鉤子函數(shù)中獲取判斷條件
export default{
data() {
return{
isRefresh:false
}
},
onShow() {
// 如果是提交狀態(tài)返回isRefresh=1,才刷新頁面,從詳情過來無需刷新
let pages = getCurrentPages();
let currPage = pages[pages.length - 1];
if(currPage.__data__.isRefresh) {
// 重新獲取數(shù)據(jù)
this.getData(true)//獲取列表數(shù)據(jù)
// 每一次需要清除,否則會(huì)參數(shù)會(huì)緩存
currPage.__data__.isRefresh=false
}
}
}
2.4、注意
如果出現(xiàn)數(shù)據(jù)沒有更新,可以使用$forceUpdate或者先置空數(shù)據(jù)再賦值數(shù)據(jù),大概率是數(shù)據(jù)沒有響應(yīng)
最后
到此這篇關(guān)于uniapp中uni.navigateBack返回后刷新頁面數(shù)據(jù)的實(shí)現(xiàn)的文章就介紹到這了,更多相關(guān)uniapp uni.navigateBack返回刷新內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
ElementUI中el-tree如何獲取每個(gè)節(jié)點(diǎn)點(diǎn)擊的選中狀態(tài)
ElementUI中el-tree獲取每個(gè)節(jié)點(diǎn)點(diǎn)擊的選中狀態(tài),有時(shí)候需要獲取el-tree每個(gè)節(jié)點(diǎn)的點(diǎn)擊狀態(tài),可以通過以下方式,其中isCheck類型為布爾值,本文結(jié)合實(shí)例代碼介紹ElementUI中el-tree獲取每個(gè)節(jié)點(diǎn)點(diǎn)擊的選中狀態(tài),感興趣的朋友一起看看吧2023-12-12
bootstrap weebox 支持ajax的模態(tài)彈出框
本篇介紹的bootstrap weebox(支持ajax的模態(tài)彈出框),歷經(jīng)多次修改,目前版本已經(jīng)穩(wěn)定,整合了bootstrap的響應(yīng)式,界面簡單,功能卻無比豐富,支持ajax、圖片預(yù)覽等等2017-02-02
javascript函數(shù)中參數(shù)傳遞問題示例探討
本節(jié)主要與大家探討下javascript函數(shù)中參數(shù)傳遞問題,有不明白的朋友可以參考下2014-07-07
在瀏覽器中獲取當(dāng)前執(zhí)行的腳本文件名的代碼
同事提了一個(gè)問題,如何在瀏覽器中動(dòng)態(tài)插入的 JavaScript 文件中,獲取當(dāng)前文件名?2011-07-07
解決uni-app微信小程序input輸入框在底部時(shí),鍵盤彈起頁面整體上移問題
問題是這樣的input?獲取焦點(diǎn)時(shí)會(huì)自動(dòng)調(diào)起手機(jī)鍵盤,設(shè)置?:adjust-position="true",會(huì)導(dǎo)致鍵盤彈起時(shí)頁面整體上移,這篇文章主要介紹了解決uni-app微信小程序input輸入框在底部時(shí),鍵盤彈起頁面整體上移問題,,需要的朋友可以參考下2022-08-08
JavaScript校驗(yàn)Number(4,1)格式的數(shù)字實(shí)例代碼
這篇文章主要介紹了JavaScript校驗(yàn)Number(4,1)格式的數(shù)字實(shí)例代碼,本文實(shí)現(xiàn)思路明確代碼簡單易懂,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下2017-03-03
layer彈出層倒計(jì)時(shí)關(guān)閉的實(shí)現(xiàn)方法
今天小編就為大家分享一篇layer彈出層倒計(jì)時(shí)關(guān)閉的實(shí)現(xiàn)方法,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-09-09

