小程序——带参返回上一页几种方法

小程序的页面跳转API像wx.navigateTo()、wx.redirectTo()之类的,都是跳转到一个全新的页面,当这个页面是表单的时候,有时候需要跳转到其它页面选取信息后再跳转回来,那之前填的信息就必须得存在,这个时候可以当跳转到选择信息的页面,选中信息后设置设置上一页的data,然后再返回到上一页,这样数据都会存在。

方法一 把当前页面数据放入本地缓存( wx.setStorage(wx.setStorageSync),上一个页面再从缓存中取出(wx.getStorage(wx.getStorageSync))同时退出登录时要清除缓存(wx.clearStorage(wx.clearStorageSync))。

方法二

  1. 在当前页设置上一页的data,例如
var pages = getCurrentPages();             //  获取页面栈
var currPage = pages[pages.length - 1];    // 当前页面
 var prevPage = pages[pages.length - 2];    // 上一个页面
 prevPage.setData({
   mydata: {a:1, b:2}                       // 假数据
 })

当然这个“mydata”必须是上一页有的数据才行

返回上一页的数据为:

wx.navigateBack({
 delta: 1
 })
  1. 直接调用方法名来更新数据
页面A
Page({
     data: {
        name: ''
     },
     ...
     ,
     //更新name
     changeData: function(name){
        this.setData({
            name: name
        })
     }
})

页面B,假设有一个文本框用于输入姓名,点击返回按钮后更新页面A的name

Page({
    //此方法用于文本框输入回调
    inputTyping: function (e) {
        //获取页面栈
        var pages = getCurrentPages();
        if(pages.length > 1){
            //上一个页面实例对象
            var prePage = pages[pages.length - 2];
            //关键在这里
            prePage.changeData(e.detail.value)
        }
    }
})

这样就可以实现数据传递给上一个页面,要注意页面A必须使用wx.navigateTo跳转到页面B,不能使用wx.redirectTo,这样会关闭上一个页面,导致页面B无法获取上一页Page实例。

方法三 在app.js中设置全局变量,当前页赋值,上一页取之

方法为

globalData: {
    userInfo: null,
  }

注意:方法一,方法三,都需要重新刷新页面数据所走方法为:

/**
   * 生命周期函数--监听页面显示
   */
  onShow: function () {
    
  },

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏菩提树下的杨过

Silverlight中多个Xaml("场景"? or "窗口"? )之间的切换/调用/弹出/传参数问题小结

silverlight中不存在Flash中的场景,有的只是一个个Xaml文件,你要是愿意,也可以把它看做"场景"或"窗口",刚开始接触sl时,对于多个xaml之...

1797
来自专栏前端儿

简单的文本框输入自动提示

简单的文本框输入自动提示--输入的时候可以直接异步加载数据库中匹配的项,然后显示出来。

581
来自专栏BestSDK

年薪30万的前端面试题,你能答对几道?|附答案

HTML面试题 1.XHTML和HTML有什么区别 HTML是一种基本的WEB网页设计语言,XHTML是一个基于XML的置标语言 最主要的不同: XHTML 元...

3866
来自专栏Theo Tsao

Angular学习笔记(一)

Angular 应用是模块化的,并且 Angular 有自己的模块系统,它被称为 Angular 模块 或 NgModules。 Angular 模块都是一个带...

1052
来自专栏Python、Flask、Django

Django The messages framework

1152
来自专栏更流畅、简洁的软件开发方式

【自然框架】js版的QuickPager分页控件 V2.0

优点: 1、  通过更换模板可以控制各个分页元素(比如首页、末页,页号导航等)的位置和是否显示。 2、  通过更换css可以实现各种UI风格和效果。(附带24套...

1988
来自专栏菩提树下的杨过

Flex4中的ModuleLoader,Alert以及TitleWindow

1、ModuleLoader 在Asp.Net开发中,经常会把页面的公共部分封装成自定义控件ascx,以达到重用或动态加载的目的。在Flex4中MXML Mod...

2225
来自专栏转载gongluck的CSDN博客

AdjustWindowRect 与 SetWindowPos

这两个函数经常一起使用,所以放到一起讲: 1 AdjustWindowRect     函数功能:该函数依据所需客户矩形的大小,计算需要的窗口矩形的大小。计算...

3557
来自专栏恰同学骚年

ASP.Net请求处理机制初步探索之旅 - Part 4 WebForm页面生命周期

开篇:上一篇我们了解了所谓的请求处理管道,在众多的事件中微软开放了19个重要的事件给我们,我们可以注入一些自定义的业务逻辑实现应用的个性化设计。本篇,我们来看看...

552
来自专栏跟着阿笨一起玩NET

C# 子窗体中调用父窗体中的方法(或多窗体之间方法调用)

本文转载:http://www.csframework.com/archive/2/arc-2-20110805-1771.htm

1232

扫码关注云+社区