【小程序】當前「頁面B」動態更改title,點擊返回按鈕,更改的標題會顯示在「來源頁面A」

最近在作小程序的時候遇到這麼一個有趣的問題,就是從A頁面跳轉到B頁面,若是B頁面須要在接口加載以後更改title,
而且若是接口請求過慢,還滅有請求完畢時就點擊返回按鈕回到A頁面,這時B頁面的請求會繼續執行,並在執行完畢後修改了A頁面的title。javascript

緣由

我的猜測,小程序自己屬於單頁面應用,代碼的運行權限沒有處理好,就像上面這種狀況,B頁面的代碼穿越到了A頁面的環境裏面,而且執行。java

解決

  1. 既然B頁面的請求方法能夠在A頁面執行,那麼在B頁面的方法中獲取的當前的頁面路由時就有可能能夠獲取到A頁面的路由,通過測試果真不出所料。
  2. 因此,能夠這樣來解決這個問題:在B頁面的onLoad中獲取當前頁面路徑,應該是/b,而後在方法中再次獲取當前路徑,多是/b,也多是/a
    如果/a,則是上面提到問題狀況,這個時候就不用取改變title了,如果/b,則能夠更改。

代碼

// utils.js
const getCurrentRouter = function () {
  let arr = getCurrentPages(),
      len = arr.length;
  return arr[len - 1].route;
}

export {getCurrentRouter};


// b.js
import {getCurrentRouter};
import { getDataForB } from '../../../servies/services.js';

Page({
  onLoad (options) {
    this.currentRouter = getCurrentRouter();
  },
  // 獲取數據
  getData () {
    getDataForB().then(() => {
      // 獲取數據後判斷router是否一致
      if (this.currentRouter == getCurrentRouter()) {
        wx.setNavigationBarTitle({
            title: '要修改的title'
        })
      }
    })
  }
})

我的博客:午後南雜git

相關文章
相關標籤/搜索