uniapp -- @tap的动态传参

在小程序开发中,遍历对象数组并实现点击事件时,由于@tap不支持动态传参,本文介绍了一种通过data-detail属性折中的解决方案,确保了动态参数的有效传递。

在做小程序的过程中
当遍历某一个对象数组时,我希望在点击时触发某一个事件,并向里传入当前的动态参数
但@tap并不支持动态传参,于是我采取:data-detail="item.month"的方式进行折中在这里插入图片描述
在这里插入图片描述

Uniapp中,`@click`和`@change`是两种不同类型的事件,有着明显的区别: ### 触发场景 - **`@click`**:主要用于处理用户的点击操作,当用户点击某个元素时触发,适用于各种可点击的元素,如按钮、链接等。例如,在一个按钮上绑定`@click`事件,当用户点击该按钮时,对应的事件处理函数就会被执行。 - **`@change`**:通常用于表单元素,当表单元素的值发生改变且完成交互时触发。比如输入框内容改变、下拉框选项切换、复选框或单选框状态改变等情况。在Sard - Uniapp项目中,Tabs组件的`@change`事件按常规逻辑应在用户主动切换标签页时触发,但可能会出现页面首次加载就自动触发的问题 [^1]。 ### 事件映射 在Uniapp事件映射表中,`click`映射为`tap`,而`change`仍对应`change`。这表明在Uniapp事件体系里,`@click`本质上相当于`@tap`,是与点击操作对应的事件;而`@change`专门用于处理表单元素值改变的情况 [^2]。 ### 传参及使用场景示例 在传参方面,以示例来看,`@click`事件可以方便地传递额外参数,如`<div @click="changeShip(biz_id)">`,通过这种方式可以将`biz_id`传递给`changeShip`函数进行处理。而`@change`事件一般是获取表单元素改变后的值,如`ShipRadioChange (e)`函数中,通过`e.detail.value`获取改变后的值进行相应操作 [^3]。 ### 事件冒泡处理 在处理事件冒泡时,两者也有所不同。对于需要阻止`@change`事件冒泡的情况,可给需要`change`的标签父级元素加上`@tap.stop.prevent`,如`<view class="checkbox_class_right" @tap.stop.prevent>`,用于防止事件冒泡到父元素。而对于`@click`事件的冒泡处理,则需要根据具体需求使用`@click.stop`等修饰符来阻止 [^4]。 ### 代码示例 ```vue <template> <view> <!-- click事件示例 --> <button @click="handleClick">点击我</button> <!-- change事件示例 --> <input type="text" @change="handleChange" /> </view> </template> <script> export default { methods: { handleClick() { console.log('按钮被点击了'); }, handleChange(e) { console.log('输入框内容改变了,新值为:', e.detail.value); } } } </script> ```
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值