需求:

跳转到一个新的页面输入内容,然后点击确定,返回到上一个页面,获取到刚才输入的内容,开始进行自己的操作。

正常跳转

在小程序页面跳转的时候是通过 wx.navigateTo() 或者 wx.redirect() 并且携带 url ,然后再目标的 Page 页面中获取参数。

正常跳转的逻辑:

wx.navigateTo({
  url: "/pages/mypage/mypage?a=1&b=2"
})

跳转之后获取参数:

Page({
  onLoad: function (options) {
    var a = options.a; // 值:1
    var b = options.b; // 值:2
  }
})

前一个页面获取 第二个页面 输入的内容

1. 使用全局数据存储

这种方法就是将自己想要储存的数据存到 App 对象上,使其成为全局的对象。
这样之后就可以在全局获取此数据了。

我觉得这种办法作用域太大了,如果此参数在很多地方使用,还可以存到这里。但是如果只在这一个页面使用,存到这里有点浪费。

2. 获取上个页面的目标参数,进行赋值

通过小程序提供的 API:getCurrentPages() 可以获取当前页面跳转的栈信息,这个栈存放着我们跳转过的路径,我们可以获取到上一个页面的 page ,然后修改上一个页面的 data 里的数据。
具体代码如下:

var pages = getCurrentPages();
var currPage = pages[pages.length - 1];  // 当前页面
var prevPage = pages[pages.length - 2];  // 上一个页面

//直接调用上一个页面的setData()方法,把数据存到上一个页面中去
prevPage.setData({
  mydata: {a:1, b:2}
})

这样我们就可以让上一个页面获取我们这个页面的数据。


这里提供了两种方法,推荐使用第二种。

第一种的作用域太大了;而且相对而言第二种方法逻辑也更清晰一点。