vs传值接收页面怎么直接打开_微信小程序--页面传值

859b933a1eb1ff4c9c6a8f16358c75ae.png

前言

昨晚在写小程序的时候,遇到了一个问题,页面传值当值为对象时,控制台会报错。之后查了百度,发现页面传值时,不能直接传递对象,需要进行类型的转换。在这里就总结一下页面传值的一些写法。

页面传值之单值

适用场景:本界面获取了用户id后,跳转的下一个界面也需要用到id,如果在下个界面再获取一遍用户id,显得多此一举。这里可以利用页面传值,直接将本界面的id传递给下一个界面。代码示例
本界面-传递

toarticle:function(e){
  // 跳转至artic界面 其中携带id 值为e.currentTarget.dataset.url
  // e.currentTarget.dataset.url也就是我们需要传递到下一个界面的值
    wx.navigateTo({
      url: "/pages/skill/article/article?id=" + e.currentTarget.dataset.url 
    })
  }

下一个界面-接收值

// 传递的值在下一个界面的onLoad()中获取
  onLoad: function (options) {
    console.log(options.id)
    // options.id 就是刚刚传递过来的值
    var k = this
    k.setData({
      url: options.id
    })
  },

页面传值之多值

本界面
传递id、x、y到下一个界面

toarticle:function(e){
    console.log(e)
    wx.navigateTo({
      url: "/pages/skill/article/article?id=" + e.currentTarget.dataset.url + "&x=" + "4" + "&y=" + "5" 
    })
  }

下一个界面
接收id、x、y,并且打印出来

onLoad: function (options) {
    console.log("id="+options.id)
    console.log("x="+options.x)
    console.log("y=" + options.y)
    var k = this
    k.setData({
      url: options.id
    })
  },

控制台结果

957df7eb1c3128878115a424f181c445.png

页面传值之传递对象值

不知道怎么的,页面之间不可以直接传递对象值
所以我们只需要对其进行类型转换就行了
发送的时候将对象转换为string 接收的时候再转换回对象发送端用 JSON.stringify()接收端用JSON.parse()

发送端示例代码

toabout:function(e){
  
    wx.navigateTo({
      url: 'about/about?id=' + JSON.stringify(e.currentTarget.dataset.id),
    })
  }

接收端示例代码

onLoad(e){
    var k=this
    console.log(JSON.parse(e.id))
    k.setData({
       work: JSON.parse(e.id)
    })
  },

ccca6bb6b531fa87d64b7c290cfc80ab.png
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值