微信小程序实现bindtap等事件传参


Posted in Javascript onApril 08, 2019

之前一直以为微信小程序按钮点击事件传参是和web端相同,即在事件中写明所传递的参数即可,但是这样尝试过以后发现小程序的控制台报错,报所写的bindtap中参数错误,之后百度发现,小程序按钮点击这类事件时一般的处理方法是指明元素所在的id,bindtap只是写明函数名,例如,bindtap='setNumber',而不是bindtap='setNumber(1)',在js中只要写function(e).通过e可以获取所传过来元素的所有信息。

什么是事件

事件是视图层到逻辑层的通讯方式。 事件可以将用户的行为反馈到逻辑层进行处理。

事件可以绑定在组件上,当达到触发事件,就会执行逻辑层中对应的事件处理函数。

事件对象可以携带额外信息,如 id, dataset, touches。

微信小程序实现bindtap等事件传参

微信小程序实现bindtap等事件传参

看图,因为需要传递的数据比较多,所以我们通过dataset携带参数信息。如果只有一个参数,可以通过id来传递。

详解(以常见的tap点击事情为例)

wxml

<view id="tapTest" data-hi="WeChat" bindtap="tapName"> Click me! </view>

JS

Page({
 tapName: function(event) {
 console.log(event)
 }
})

event 打印结果

{
"type":"tap",
"timeStamp":895,
/////////////////////////////////
"target": {
 "id": "tapTest",
 "dataset": {
 "hi":"WeChat"
 }
},
"currentTarget": {
 "id": "tapTest",
 "dataset": {
 "hi":"WeChat"
 }
},
///////////////////////////////
"detail": {
 "x":53,
 "y":14
},
"touches":[{
 "identifier":0,
 "pageX":53,
 "pageY":14,
 "clientX":53,
 "clientY":14
}],
"changedTouches":[{
 "identifier":0,
 "pageX":53,
 "pageY":14,
 "clientX":53,
 "clientY":14
}]
}

注意两点:

1、data-名称 不能有大写字母,如果需要,可以通过 - (中划线)来连接单词,编译的时候小程序会将第二个单词首字母自动大写。图中代码是为了自己标志,所以第二个单词的首字母大写了,其实可以不用。data-* 属性中不可以存放对象。

2、注意打印结果中target和currentTarget的区别。

  • target 触发事件的源组件。
  • currentTarget 事件绑定的当前组件。

如果你在父容器上绑定了事件并传参,当你点击父容器时,事件绑定的组件和触发事件的源组件是同一个元素,所以currentTarget 、target 都可以拿到参数,但是当你点击子元素时,target 就不是事件绑定的组件了,所以拿不到参数。
由于事件冒泡的机制,父容器上绑定的事件依然可以触发,所以currentTarget 依然可以拿到参数。

说明

id传参和dataset类似,只是最后获取值的时候不同。event.currentTarget.id

PS:小程序 view使用bindtap传值问题

如图,view标签 加 bindtap事件,用data-name传值,如果view中只有文字,点击整个view区域都可以接收到data-name的值,如果view里面加一个lable标签,那么点击lable包裹的区域,data-name取不到值。  解决方法:把取值方式  由e.target.dataset.carrierName  修改为e.currentTarget.dataset.carrierName即可

微信小程序实现bindtap等事件传参

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
jquery.simple.tree插件 更简单,兼容性更好的无限树插件
Sep 03 Javascript
jQuery EasyUI API 中文文档 - MenuButton菜单按钮使用介绍
Oct 06 Javascript
Jquery多选下拉列表插件jquery multiselect功能介绍及使用
May 24 Javascript
jquery()函数的三种语法介绍
Oct 09 Javascript
jquery dialog open后,服务器端控件失效的快速解决方法
Dec 19 Javascript
javascript中cookie对象用法实例分析
Jan 30 Javascript
js实现鼠标感应图片展示的方法
Feb 27 Javascript
JavaScript变量的作用域全解析
Aug 14 Javascript
vue实现图书管理demo详解
Oct 17 Javascript
Bootstrap table中toolbar新增条件查询及refresh参数使用方法
May 18 Javascript
微信小程序实现搜索功能并跳转搜索结果页面
May 18 Javascript
简述ES6新增关键字let与var的区别
Aug 23 Javascript
详解vue中axios请求的封装
Apr 08 #Javascript
使用taro开发微信小程序遇到的坑总结
Apr 08 #Javascript
vue+element+Java实现批量删除功能
Apr 08 #Javascript
如何为你的JavaScript代码日志着色详解
Apr 08 #Javascript
详解element-ui日期时间选择器的日期格式化问题
Apr 08 #Javascript
小程序获取当前位置加搜索附近热门小区及商区的方法
Apr 08 #Javascript
服务端预渲染之Nuxt(使用篇)
Apr 08 #Javascript
You might like
Can't create/write to file 'C:\WINDOWS\TEMP\...MYSQL报错解决方法
2011/06/30 PHP
PHP实现活动人选抽奖功能
2017/04/19 PHP
javascript 火狐(firefox)不显示本地图片问题解决
2008/07/05 Javascript
jQuery 核心函数以及jQuery对象
2010/03/23 Javascript
jQuery.Autocomplete实现自动完成功能(详解)
2010/07/13 Javascript
javascript string字符串优化问题
2011/07/31 Javascript
javascript计算当月剩余天数(天数计算器)示例代码
2014/01/09 Javascript
用jquery等比例控制图片宽高的具体实现
2014/01/28 Javascript
javascript匀速运动实现方法分析
2016/01/08 Javascript
基于原生js淡入淡出函数封装(兼容IE)
2016/10/20 Javascript
vue.js的安装方法
2017/05/12 Javascript
详解Angular 4.x NgIf 的用法
2017/05/22 Javascript
JavaScript判断输入是否为数字类型的方法总结
2017/09/28 Javascript
js操作table中tr的顺序实现上移下移一行的效果
2018/11/22 Javascript
Vue2(三)实现子菜单展开收缩,带动画效果实现方法
2019/04/28 Javascript
微信公众号平台接口开发 获取access_token过程解析
2019/08/14 Javascript
Openlayers3实现车辆轨迹回放功能
2020/09/29 Javascript
json.stringify()与json.parse()的区别以及用处
2021/01/25 Javascript
[49:28]VP vs Optic 2018国际邀请赛小组赛BO2 第二场 8.16
2018/08/17 DOTA
Python使用functools实现注解同步方法
2018/02/06 Python
使用python根据端口号关闭进程的方法
2018/11/06 Python
Python依赖包整体迁移方法详解
2019/08/15 Python
Python实现的微信红包提醒功能示例
2019/08/22 Python
用CSS3实现背景渐变的方法
2015/07/14 HTML / CSS
canvas实现漂亮的下雨效果的示例
2018/04/18 HTML / CSS
自我评价正确写法范文
2013/12/10 职场文书
优秀村官事迹材料
2014/01/10 职场文书
食品安全工作方案
2014/05/07 职场文书
2014年入党积极分子党校培训心得体会
2014/07/08 职场文书
优秀党员学习焦裕禄精神思想汇报范文
2014/09/10 职场文书
领导干部遵守党的政治纪律情况思想汇报
2014/09/14 职场文书
店面出租协议书范本
2014/11/28 职场文书
公司晚宴祝酒词
2015/08/11 职场文书
商业计划书范文
2019/04/24 职场文书
在Python 中将类对象序列化为JSON
2022/04/06 Python
MySQL数据库实验实现简单数据库应用系统设计
2022/06/21 MySQL