zoukankan      html  css  js  c++  java
  • 小tips:微信小程序登录后返回登录前的页面继续操作(保留参数)

    在app.js中添加如下两个方法即可:

    // 设置需要回调的地址
        setCallbackUrl: function(mode) {
            return new Promise((resolve,reject) => {
                let pages = getCurrentPages(); //获取加载的页面
                let currentPage = pages[pages.length - 1]; //获取当前页面的对象
                let urlPage = ''; // 存储的跳转地址
                let url = currentPage.route; //当前页面url
                let argumentsStr = '';
                let options = currentPage.options; //如果要获取url中所带的参数可以查看options
                for (let key in options) {
                        let value = options[key];
                        argumentsStr += key + '=' + value + '&';
                }
                if(argumentsStr) {
                     argumentsStr = argumentsStr.substring(0, argumentsStr.length - 1);
                     urlPage = url + '?' + argumentsStr;
                } else {
                    urlPage = url;
                }
                let callbackObj = {
                    callbackUrl: `/${urlPage}`,
                    mode: mode || 'redirectTo'
                }
                 wx.setStorageSync('callbackObj', JSON.stringify(callbackObj));
                 resolve();
            })
        },
        
        // 获取本地可以回调的地址
        getCallBackUrl: function() {
            return new Promise((resolve,reject) => {
                const callbackObj = wx.getStorageSync('callbackObj');
                if(callbackObj) {
                    let resultObj = JSON.parse(callbackObj);
                    let callbackUrl = resultObj.callbackUrl;
                    let mode = resultObj.mode;
                    mode == 'redirectTo' && wx.redirectTo({url: callbackUrl});
                    mode == 'switchTab' && wx.switchTab({url: callbackUrl});
                    mode == 'reLaunch' && wx.reLaunch({url: callbackUrl});
                    mode == 'navigateTo' && wx.navigateTo({url: callbackUrl});
                } else {
                    reject();
                }
            })
        },
        

    跳转到登录页面前通过setCallbackUrl方法获取即将跳转的当前页面,当登录后调用getCallBackUrl方法,查看本地是否有需要跳转的地址,没有就在catch中执行登录后的正常逻辑,比如跳转到我的模块页面。代码如下:

    app.getCallBackUrl().catch(() => {
        // catch中执行默认的操作
        wx.redirectTo({
            url: '/pages/my/mycenter/mycenter'
        })
    })
  • 相关阅读:
    使用jedis操作redis常用方法
    PostgreSQL下安装pg_stat_statements
    redis+keepalived安装
    eclipse离线安装Activiti Designer插件
    PostgreSQL下安装pg_stat_statements
    mysql设置索引
    使用appium在android7.0真机上测试程序时报错command failed shell “ps ‘uiautomator’”的解决方式
    appium--adb版本过低
    appium报错--版本不匹配
    win7提示不是正版桌面变黑
  • 原文地址:https://www.cnblogs.com/moqiutao/p/14722748.html
Copyright © 2011-2022 走看看