微信小程序实现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 相关文章推荐
网页自动跳转代码收集
Sep 27 Javascript
javascript代码编写需要注意的7个小细节小结
Sep 21 Javascript
js验证电话号码与手机支持+86的正则表达式
Jan 23 Javascript
JavaScript实现简单的二级导航菜单实例
Apr 15 Javascript
jQuery制作网页版选项卡
Jul 28 Javascript
AngularJS基础 ng-copy 指令实例代码
Aug 01 Javascript
JS基于onclick事件实现单个按钮的编辑与保存功能示例
Feb 13 Javascript
利用js的闭包原理做对象封装及调用方法
Apr 07 Javascript
Vue2 使用 Echarts 创建图表实例代码
May 18 Javascript
浅谈AngularJS中使用$resource(已更新)
Sep 14 Javascript
jquery根据name取得select选中的值实例(超简单)
Jan 25 jQuery
vue 开发企业微信整合案例分析
Dec 02 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
Laravel 5框架学习之模型、控制器、视图基础流程
2015/04/08 PHP
PHP有序表查找之插值查找算法示例
2018/02/10 PHP
JS替换文本域内的回车示例
2014/02/18 Javascript
jQuery中slice()方法用法实例
2015/01/07 Javascript
jquery 点击元素后,滚动条滚动至该元素位置的方法
2016/08/05 Javascript
JavaScript 对象详细整理总结
2016/09/29 Javascript
Jquery+Ajax+xml实现中国地区选择三级联动菜单效果(推荐)
2017/06/09 jQuery
关于Angularjs中自定义指令一些有价值的细节和技巧小结
2018/04/22 Javascript
AngularJS日期格式化常见操作实例分析
2018/05/17 Javascript
vue+springmvc导出excel数据的实现代码
2018/06/27 Javascript
通过封装scroll.js 获取滚动条的值
2018/07/13 Javascript
JavaScript实现数组全排列、去重及求最大值算法示例
2018/07/30 Javascript
vue展示dicom文件医疗系统的实现代码
2018/08/27 Javascript
JS实现在线ps功能详解
2019/07/31 Javascript
vue实现分页的三种效果
2020/06/23 Javascript
[02:17]2016完美“圣”典风云人物:Sccc专访
2016/12/03 DOTA
python BeautifulSoup设置页面编码的方法
2015/04/03 Python
Python批量转换文件编码格式
2015/05/17 Python
python实现Flappy Bird源码
2018/12/24 Python
基于wxPython的GUI实现输入对话框(2)
2019/02/27 Python
django queryset相加和筛选教程
2020/05/18 Python
python3.7+selenium模拟淘宝登录功能的实现
2020/05/26 Python
Python sorted对list和dict排序
2020/06/09 Python
python按顺序重命名文件并分类转移到各个文件夹中的实现代码
2020/07/21 Python
python绘制雷达图实例讲解
2021/01/03 Python
Canvas实现保存图片到本地的示例代码
2018/06/28 HTML / CSS
canvas绘图按照contain或者cover方式适配并居中显示
2019/02/18 HTML / CSS
毕业生如何写自荐信
2014/03/26 职场文书
优秀安全员事迹材料
2014/05/11 职场文书
安全施工标语
2014/06/07 职场文书
中职招生先进个人材料
2014/08/31 职场文书
老干部工作汇报材料
2014/10/28 职场文书
村官2015年度工作总结
2015/10/14 职场文书
历史名人教你十五个读书方法,赶快Get起来!
2019/07/18 职场文书
Java实现斗地主之洗牌发牌
2021/06/14 Java/Android
httpclient调用远程接口的方法
2022/08/14 Java/Android