微信小程序使用路由传参和传对象的方法

这篇具有很好参考价值的文章主要介绍了微信小程序使用路由传参和传对象的方法。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

近期在做微信小程序开发,在页面跳转时,需要携带参数到下一个页面,尤其是将对象传入页面。为了方便重温,特此记录。

路由传字符串参数

原始页面

传递字符串参数比较简单。路由跳转有两种方式,一种是通过navigator组件的url完成,另一种是使用wx.navigateTo()跳转。wxml代码如下:

<!--pages/tim/index/index.wxml-->
<view>Author:益添</view>
<view>
	<navigator url="/pages/tim/demo/demo?name=Tim&sex=男" hover-class="navigator-hover">navigator携带字符串参数</navigator>
</view>
<button bind:tap="tapStringParameter">传递字符串参数</button>

微信小程序页面传递对象,操作教程,微信小程序,小程序,路由,参数,对象参数

需要通过按钮的方法响应传递,则在js中,定义一个tapStringParameter方法,处理点击后的工作

  tapStringParameter(){
    console.log("tapStringParameter")
    wx.navigateTo({
      url: '/pages/tim/demo/demo?name=Tim&sex=男'
    })
  },

接收参数的页面

在对应的pages/tim/demo/demo页面,在onLoad方法中接收参数,代码和示例如下:

  onLoad(options) {
    console.log(options)
    console.log(options.name, options.sex)
  }

效果如下,分别点击navigator和按钮,都可以获取到对应的参数。

微信小程序页面传递对象,操作教程,微信小程序,小程序,路由,参数,对象参数

路由传递对象

由于字符串传递的参数需要转换,且参数的长度有限(路由字符串具体长度笔者未看到说明,可能和http的get方法一样,在实际开发过程中遇到过超限无法完整传递的情况)。因此要传递对象,就需要使用wx.navigateTo()中的回调函数。

原始页面

接下来,在上述的wxml页面上,增加一个按钮

<!--pages/tim/index/index.wxml-->
<view>Author:益添</view>
<view>
	<navigator url="/pages/tim/demo/demo?name=Tim&sex=男" hover-class="navigator-hover">navigator携带字符串参数</navigator>
</view>
<button bind:tap="tapStringParameter">传递字符串参数</button>
<button bind:tap="tapObjectParameter">传递对象参数</button>

在js中,我们增加“tapObjectParameter”方法。在方法中创建一个对象,并在wx.navigateTo()的success回调中,添加一个事件,命名为“acceptDataFromOpenerPage”,将对象传入。在url中,我们还是可以通过字符串传递参数。

// pages/tim/index/index.ts
Page({
  tapStringParameter(){
    console.log("tapStringParameter")
    wx.navigateTo({
      url: '/pages/tim/demo/demo?name=Tim&sex=男'
    })
  },
  tapObjectParameter(){
    console.log("tapObjectParameter")
    let person = {
      name: '益添',
      sex: '男'
    }
    wx.navigateTo({
      url: '/pages/tim/demo/demo?name=Tim&sex=男',
      success: function(res) {
        // 通过eventChannel向被打开页面传送数据
        res.eventChannel.emit('acceptDataFromOpenerPage', person)
      }
    })
  }
})

接收参数的页面

在onLoad函数中,使用this.getOpenerEventChannel()获取当前的事件频道,然后监听“acceptDataFromOpenerPage”事件,在回调中,即可获取传递过来的参数。

// pages/tim/demo/demo.ts
Page({
  onLoad(options) {
    console.log(options)
    console.log(options.name, options.sex)
    const eventChannel = this.getOpenerEventChannel()
    // 监听acceptDataFromOpenerPage事件,获取上一页面通过eventChannel传送到当前页面的数据
    eventChannel.on('acceptDataFromOpenerPage', function (data) {
      console.log("acceptDataFromOpenerPage")
      console.log(data)
      console.log(data.name, data.sex)
    })
  }
})

点击按钮,可以看到各页面传入的中的参数能正常输出。

微信小程序页面传递对象,操作教程,微信小程序,小程序,路由,参数,对象参数

参考链接:

导航 / navigator (qq.com)

路由 / wx.navigateTo (qq.com)文章来源地址https://www.toymoban.com/news/detail-739789.html

到了这里,关于微信小程序使用路由传参和传对象的方法的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 小程序wx.navigateToMiniProgram跳转传参和接收参数

    小程序wx.navigateToMiniProgram跳转传参和接收参数 看了好多没有具体的步骤,自己写一下 传参 wx.navigateToMiniProgram({ appId: \\\'\\\', path: \\\'page/index/index?id=123\\\', extraData: { foo: \\\'bar\\\' }, envVersion: \\\'develop\\\', success(res) { // 打开成功 } }) 对应小程序接收参数 需要在app.js App.onLaunch , App.onShow 中接收,数

    2024年02月09日
    浏览(38)
  • 【小程序】uni-app 页面的传参和接参

    值得一提的是小程序只能使用字符串的方式进行传递,不像vue的路由传参。至于为什么要这样,这就需要看文档怎么说了。 注意:传递参数只能以 ?key=valuekey=value 方式传递 使用 onLoad() 钩子函数来接收 小程序只能以 字符串的方式进行传递和接收,那么复杂类型对象和数组怎

    2024年02月02日
    浏览(35)
  • jar程序部署的外部依赖和按名传参和shellUtil传参json串及返回pid问题

    java -cp 命令跟jar路径和指定的编译类(main)路径; java -jar 跟jar路径也ok,但是需要打包的时候指定 jar包里的 MANIFEST.MF 文件中 Main-Class项的值 。即默认运行的main函数。 使用getopts命令。 getopts命令识别出各个入参选项之后(用:分隔),遍历case判断。其操作中,有两个\\\"常量

    2024年02月16日
    浏览(25)
  • 《微信小程序案例4》bindtap点击事件使用自定义数据data-xxx传参方法

    1、首先在标签中使用data-xxx来自定义要传入的数据,xxx代表数据值 2、绑定事件bindtap=xxx 3、在js中使用event.currentTarget.dataset.xxx来取你传入的值 点击结果成功:

    2024年02月13日
    浏览(40)
  • 微信小程序 method传参 和 页面传参

    image src=\\\"/img/b1.jpg\\\" class=\\\'bannerImg\\\' mode=\\\"widthFix\\\" bindtap=\\\"gotoMessage\\\" data-flag=\\\"msg\\\"/image 使用data-参数Key = \\\'指定参数值\\\' gotoMessage(e){     let flagName =  e.target.dataset.flag     if(flagName === \\\'msg\\\'){       wx.switchTab({         url: \\\'/pages/message/message\\\',       })     }else if(fla

    2024年02月09日
    浏览(43)
  • 微信小程序事件传参

    微信小程序怎么事件传参 dataset 对象 每个虚拟dom身上都拥有一个dataset对象 给虚拟 dom 绑定上 data-自定义键=“值”的这种属性,例如: 想要传一个id: 绑定上此种格式的属性后,会被去除 data- ,然后以键值对的形式添加在虚拟 dom 身上的dataset 对象身上。 事件对象 事件函数

    2024年02月09日
    浏览(40)
  • 微信小程序组件的传参

     # 父子关系      1.父向子传参     // 子组件:通过 properties 声明要从父组件中接收的数据     //    组件的属性列表     properties:{         tabId:String     }     // 父组件:通过自定义属性的形式传递数据。以子组件中定义的 key 为属性名,以要传递的数据为属性值     li

    2024年02月10日
    浏览(32)
  • 微信小程序如何实现页面传参?

    只要你的小程序超过一个页面那么可能会需要涉及到页面参数的传递,下面我总结了 4 种页面方法。 通过在url后面拼接参数,参数与路径之间使用 ? 分隔,参数键与参数值用 = 相连,不同参数用 分隔;如 ‘path?key=valuekey2=value2’。 案例:A页面带参数跳转到B页面 A页面跳转代

    2024年02月15日
    浏览(36)
  • 微信小程序点击事件bindtap传参

    微信小程序bindtap点击事件如何传参 wxml页面 JS 点击后会有以下提示: bindtap在传参时需要用到data-xxx来进行传递参数,如下: wxml页面 JS

    2024年04月28日
    浏览(31)
  • 微信小程序通过点击事件传参(data-)

    大家都知道在 vue 中,我们可以直接在点击事件中放入传递的参数进行传参;然而微信小程序中并不适用这样的写法,但是微信小程序可以通过自定义属性从而绑定参数使用。 微信小程序可以通过直接写 data-index=\\\"1\\\" 进行数据的绑定 ,利用 bindtap 点击事件执行函数从而获取到

    2024年02月11日
    浏览(48)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包