微信小程序> 小程序页面间传值

小程序页面间传值

浏览量:607 时间: 来源:一叶一菩提11

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方便很多。

版权声明

即速应用倡导尊重与保护知识产权。如发现本站文章存在版权问题,烦请提供版权疑问、身份证明、版权证明、联系方式等发邮件至197452366@qq.com ,我们将及时处理。本站文章仅作分享交流用途,作者观点不等同于即速应用观点。用户与作者的任何交易与本站无关,请知悉。

产品经理

手机 : 13312967497

擅长 : 小程序流量变现

扫码领取礼包

热门模板

  • 头条
  • 搜狐
  • 微博
  • 百家
  • 一点资讯
  • 知乎