zoukankan      html  css  js  c++  java
  • 【小程序】当前“页面B”动态更改title,点击返回按钮,更改的标题会显示在“来源页面A”

    最近在做小程序的时候遇到这么一个有趣的问题,就是从A页面跳转到B页面,如果B页面需要在接口加载之后更改title,
    并且如果接口请求过慢,还灭有请求完毕时就点击返回按钮回到A页面,这时B页面的请求会继续执行,并在执行完毕后修改了A页面的title。

    原因

    个人猜想,小程序本身属于单页面应用,代码的运行权限没有处理好,就像上面这种情况,B页面的代码穿越到了A页面的环境里面,并且执行。

    解决

    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'
            })
          }
        })
      }
    })
    

    个人博客:午后南杂

  • 相关阅读:
    PAT 甲级 1113 Integer Set Partition
    简单 dp
    #Leetcode# 707. Design Linked List
    #Leetcode# 817. Linked List Components
    #Leetcode# 268. Missing Number
    #Leetcode# 328. Odd Even Linked List
    #Leetcode# 445. Add Two Numbers II
    jzoj 1252. 天平
    2019.01.26【NOIP提高组】模拟 B 组 总结
    【NOIP2011DAY2】计算系数
  • 原文地址:https://www.cnblogs.com/luanhewei/p/9461519.html
Copyright © 2011-2022 走看看