小程序页面间传值

先说一下正向传值:

1.url传值:

 通过url传值的需要通过option来获取参数值。

 更多详情可以访问小程序-navigateTo章节

 A页面:

wx.navigateTo({
  url: 'test?id=1'
})

B页面:

复制代码
Page({
  data:{
    id:'',
  },
  onLoad: function(option){
    this.setData({
      id:option.id
    })
  }
})
复制代码

2.本地存储:

关于缓存,可以先访问小程序-数据缓存稍作了解。

A页面:

wx.setStorageSync('username', 'ddd')

B页面:

复制代码
Page({
  data:{
    username:'',
  },
  onLoad: function(){
   var username = wx.getStorageSync('username')
   this.setData({
       username: username
    })
  }
})
复制代码

3.全局的app对象

关于app对象,可以访问小程序-注册程序了解相关信息。

A页面:

var app = getApp();
app.username='ddd';

B页面:

var app = getApp();
var username = app.username;

再说一下反向传值,看了上面那几种方法,聪明的你应该知道反向传值有哪几种方式了。对,就是方法2和方法3:

1.本地存储:

B页面:

wx.setStorageSync('username', 'ddd');
//返回上一页
wx.navigateBack();

A页面:

复制代码
Page({
  data:{
    username:'',
  },
  onShow: function(){
   var username = wx.getStorageSync('username')
   this.setData({
       username: username
    })
  }
})
复制代码

2.全局的app对象

B页面:

var app = getApp();
app.username='ddd';

A页面:

复制代码
var app = getApp(); 

Page({
  data:{
    username:'',
  },
  onShow: function(){
   var username = app.username;
   this.setData({
       username: username
    })
  }
})
复制代码

3.在当前页通过获取前一个 page 实例,再赋值

复制代码
var pages = getCurrentPages();
var currPage = pages[pages.length - 1];   //当前页面
var prevPage = pages[pages.length - 2];  //上一个页面
//直接调用上一个页面的 setData() 方法,把数据存到上一个页面中去
prevPage.setData({
  mdata:1 
})
复制代码

这种方法的弊端:因为进入 B 页面的入口可能是很多个。这样做,可能会导致获取到的页面实例不正确。

原文地址:https://www.cnblogs.com/xiaozhang666/p/11690229.html