小程序页面传参之事件传参

本文介绍了在小程序开发中如何实现从一个页面点击事件跳转到另一个页面,并传递参数,确保新页面显示与点击内容相对应。通过绑定事件、使用wx.navigateTo进行跳转、利用data-*属性传递数据,以及在新页面的onLoad中获取参数,实现页面间的数据同步。以音乐播放为例,详细阐述了整个过程,并提供了相关代码示例。
摘要由CSDN通过智能技术生成

场景:
当我们在开发小程序的时候,经常会遇到此类要求:点击一个内容跳转到一个新的页面,并且新页面的内容是由点击的内容决定的。比如用户在美团上浏览商品,通常情况下我们去查看详情页面,会发现它的结构都是相同或者类似的,但是内容是由用户点击的内容决定的。比如点击黄焖鸡,进到详情页就会发现封面是黄焖鸡,这和我们点击的内容是一一对应的。这种效果在小程序开发过程中十分常见。今天我们拿一个音乐类的小程序举例子,看看页面之间的数据是如何进行关联的。

需求:
用户点击图1中的播放按钮时,跳转到图2,然后播放图1中对应列表的歌曲。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在本例中,如果点击图1“孤勇者”后面的播放按钮,跳转到图2,则播放“孤勇者”,且图2中的歌曲名字显示为“孤勇者”这首音乐。如果点击图1“太阳”后面的播放按钮,跳转到图2,则播放“太阳”,且图2中的歌曲名字显示为“太阳”这首音乐。

思考几个问题:
1.如何点击后跳转到新页面?
2.如何将图1中的信息传递到图2中?
3.图2中的歌曲名字如何做到和图1中一致?

简单分析下过程:
1.如何跳转?
给图1中的播放按钮绑定一个事件,在事件中使用wx.navigateTo({ url: url }) 跳转到新页面。

小程序事件传参页面传参都是非常常见的场景,具体实现方式如下: ### 事件传参小程序中,可以通过 `data-*` 属性将数据传递给事件处理函数。在 WXML 中,通过 `bind:eventName` 或 `catch:eventName` 绑定事件处理函数,例如: ```html <view bind:tap="handleTap" data-id="123">点击我</view> ``` 在事件处理函数中,可以通过 `event.currentTarget.dataset` 获取 `data-*` 属性值,例如: ```javascript Page({ handleTap(event) { const id = event.currentTarget.dataset.id console.log('id:', id) // 输出:id: 123 } }) ``` ### 页面传参小程序中,可以通过路由传参的方式将数据传递给目标页面。在源页面中,通过 `wx.navigateTo` 或 `wx.redirectTo` 方法跳转到目标页面,并传递参数,例如: ```javascript wx.navigateTo({ url: '/pages/detail/detail?id=123' }) ``` 在目标页面中,可以通过 `onLoad` 生命周期函数获取路由参数,例如: ```javascript Page({ onLoad(options) { const id = options.id console.log('id:', id) // 输出:id: 123 } }) ``` 需要注意的是,路由参数的类型都是字符串类型,如果需要传递数字或其他类型的数据,需要进行类型转换。例如: ```javascript wx.navigateTo({ url: '/pages/detail/detail?id=' + 123 }) ``` 在目标页面中,需要将字符串类型的参数转换为数字类型,例如: ```javascript Page({ onLoad(options) { const id = parseInt(options.id) console.log('id:', id) // 输出:id: 123 } }) ``` 除了路由传参,还可以通过全局变量、缓存、事件总线等方式进行数据传递。需要根据具体场景选择合适的方式。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值