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'
        })
    })
  • 相关阅读:
    文件目录T位
    改变文件权限的用户身份
    改变进程打开文件默认权限检查方式
    新建文件的UID和GID
    进程的用户ID
    centos7使用无线wifi连接
    2.8. 创建 NSManagedObject 的子类 (Core Data 应用程序实践指南)
    2.7. 属性的各种设置选项(Core Data 应用程序实践指南)
    2.6. 类型(Core Data 应用程序实践指南)
    2.5. Integer 16 、Integer 32、Integer 64(Core Data 应用程序实践指南)
  • 原文地址:https://www.cnblogs.com/moqiutao/p/14722748.html
Copyright © 2011-2022 走看看