小程序返回上界面不刷新問題

現在假設我有個A界面,列表或者是其他的界面,從A界面點擊跳轉到B界面,然後在B界面操作後A界面應該發生變化,但是實際上我們點擊返回的時候我們發現並沒有刷新,這個時候我們應該通過界面棧來實現A界面的刷新,下面是重點:

1,首先,我們在A界面寫一個函數,假如叫 changeData() ,注意這個函數並不是在onload裏面,應該和onload是同級目錄,代碼塊如下:

changeData: function (historyArr) {
let _this=this;
    this.loadList();
},
onLoad:function(){//................},

2,其次,我們應該在B界面中添加若干個獲取界面棧的代碼塊,舉個例子吧,

①,我想在B界面初始化的時候就讓A界面實現刷新,這個時候我們可以在B界面的onload裏面添加代碼塊,如果B界面onload裏面請求了函數,我們可以在請求的函數的

success中調用代碼塊,具體代碼塊如下:解釋已經說明

//獲取頁面棧
var pages = getCurrentPages();
if (pages.length > 1) {
    //上一個頁面實例對象
    var prePage = pages[pages.length - 2];
    //關鍵在這裏,這裏面是觸發上個界面
    prePage.changeData(prePage.data.historyArr)// 不同的人裏面的值是不同的,這個數據是我的,具體的你們要根據自己的來查看所要傳的參數
}
②,我想在界面B操作後界面A實現刷新,或者是界面的局部刷新,這個時候我們應該在B界面中的你想要的操做的函數執行完成後(具體的看情況)調用上面的代碼塊

3,想要試試行不行,建議打印看下吧,A界面的函數加打印的數據的話觸發是在B界面觸發的,這點需要注意,別把console控制檯清了;


我們的原理就是通過界面棧獲取上個界面,再獲取到上個界面對應的函數,然後我們通過獲取到上個界面的函數來觸發上個界面的界面重新加載。

發佈了75 篇原創文章 · 獲贊 71 · 訪問量 44萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章