微信小程序实现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 相关文章推荐
ExtJS 工具栏 分页事件参数
Mar 05 Javascript
jQuery使用height()获取高度需要注意的地方
Dec 13 Javascript
jQuery中innerHeight()方法用法实例
Jan 19 Javascript
基于JQuery实现仿网易邮箱全屏动感滚动插件fullPage
Sep 20 Javascript
JavaScript代码实现图片循环滚动效果
Mar 19 Javascript
JavaScript判断数组是否存在key的简单实例
Aug 03 Javascript
最丑的时钟效果!js canvas时钟制作方法
Aug 15 Javascript
js监听键盘事件的方法_原生和jquery的区别详解
Oct 10 Javascript
JS判断时间段的实现代码
Jun 14 Javascript
详解javascript中的babel到底是什么
Jun 21 Javascript
使用webpack编译es6代码的方法步骤
Apr 28 Javascript
javascript实现点击星星小游戏
Dec 24 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
杏林同学录(三)
2006/10/09 PHP
PHP 作用域解析运算符(::)
2010/07/27 PHP
PHP开启目录引索+fancyindex漂亮目录浏览带搜索功能
2019/09/23 PHP
jquery tab插件制作实现代码
2010/06/22 Javascript
高效的获取当前元素是父元素的第几个子元素
2013/10/15 Javascript
js实现鼠标点击左上角滑动菜单效果代码
2015/09/06 Javascript
浅谈JavaScript中的分支结构
2016/07/01 Javascript
jQuery焦点图左右转换效果
2016/12/12 Javascript
js Canvas绘制圆形时钟效果
2017/02/17 Javascript
jQuery插件zTree实现获取当前选中节点在同级节点中序号的方法
2017/03/08 Javascript
基于vue.js轮播组件vue-awesome-swiper实现轮播图
2017/03/17 Javascript
webpack file-loader和url-loader的区别
2019/01/15 Javascript
微信小程序整合使用富文本编辑器的方法详解
2019/04/25 Javascript
七行JSON代码把你的网站变成移动应用过程详解
2019/07/09 Javascript
vue2.* element tabs tab-pane 动态加载组件操作
2020/07/19 Javascript
解决echarts数据二次渲染不成功的问题
2020/07/20 Javascript
如何利用node转发请求详解
2020/09/17 Javascript
基于JQuery和DWR实现异步数据传递
2020/10/16 jQuery
[33:42]LGD vs OG 2018国际邀请赛小组赛BO2 第一场 8.16
2018/08/17 DOTA
python实现sublime3的less编译插件示例
2014/04/27 Python
python实现查询苹果手机维修进度
2015/03/16 Python
Scrapy框架使用的基本知识
2018/10/21 Python
python组合无重复三位数的实例
2018/11/13 Python
Python实现爬取马云的微博功能示例
2019/02/16 Python
python钉钉机器人运维脚本监控实例
2019/02/20 Python
python绘制评估优化算法性能的测试函数
2019/06/25 Python
python通过安装itchat包实现微信自动回复收到的春节祝福
2020/01/19 Python
css3 transform过渡抖动问题解决
2020/10/23 HTML / CSS
HTML5之SVG 2D入门2—图形绘制(基本形状)介绍及使用
2013/01/30 HTML / CSS
Html5之webcoekt播放JPEG图片流
2020/09/22 HTML / CSS
泰海淘:泰国king Power王权免税集团旗下跨境海淘综合型电商
2020/07/26 全球购物
党的群众路线教育实践活动宣传方案
2014/02/23 职场文书
借款协议书
2014/04/12 职场文书
2015年大学生实习评语
2015/03/25 职场文书
大学新生入学感想
2015/08/07 职场文书
CSS link与@import的区别和用法解析
2023/05/07 HTML / CSS