1、URL传值
这种方式最常用,比如:
wx.navigateTo({ url: '../detail/detail?cid='+cid+'&token='+token})这里面直接通过跳转页面的URL进行传值,然后在另一个页面进行接收:
onLoad: function (opt) { console.log('cid =' + opt.cid); console.log('access_token =' + opt.access_token);}传递字符串
var model = this.data.str; wx.navigateTo({ url: '../detail/detail?model=' + model, })在下个页面的onload中获取,
onLoad: function (options) { var bean = options.model; console.log(options.model) this.setData({ model:bean }) }传递对象
通过提供的JSON.stingify方法,将对象转换成字符串后传递
var model = JSON.stringify( model); wx.navigateTo({ url: '../detail/detail?model=' + model, }) //接收onLoad: function (options) {//将字符串转换成对象 var bean = JSON.parse(options.model);}注意,传递对象有时会出现错误Uncaught SyntaxError: Unexpected end of input
使用encodeURICompoent与decodeURIComponent来解决即可
//传递时//encodeURICompoent JSON.stringify(model);var model = JSON.stringify( model); wx.navigateTo({ url: '../detail/detail?model=' + encodeURICompoent(JSON.stringify(model)), }) //接收时//JAON.parse(decodeURIComponent(model));onLoad: function (options) { var bean = JSON.parse(decodeURIComponent(options.model));}这种传值方式只适合值比较少的时候使用,传值比较多的时候,还是建议写本地缓存~
2、本地缓存
小程序API提供了本地缓存数据的API,默认可以缓存10M的数据,如下:
wx.setStorageSync('checkin', checkin);checkin是一个object,在需要的页面直接调用wx.getStorageSync即可获取,这样就解决了传值较少的问题了。
3、全局APP
其实还有第三种方式,就是全局APP变量。app.js和app.wxss中的代码都是全局生效的,所以我们可以利用这一点儿,在不同页面之间进行传值。
//往globalData设置值getApp().globalData.data = "12345";//取globaData的值var data = app.globalData.data;App({ globalData: { data:XXX }})GlobalData可以随时在页面中读取和存储数据,比Storage方便很多。














