微信小程序实现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 EasyUI API 中文文档 - Documentation 文档
Sep 29 Javascript
用Javascript评估用户输入密码的强度实现代码
Nov 30 Javascript
jquery表单验证框架提供的身份证验证方法(示例代码)
Dec 27 Javascript
中止javascript执行的方法
Feb 14 Javascript
JS实现控制表格单元格垂直对齐的方法
Mar 30 Javascript
js获取当前页的URL与window.location.href简单方法
Feb 13 Javascript
浅谈react.js 之 批量添加与删除功能
Apr 17 Javascript
BootStrap daterangepicker 双日历控件
Jun 02 Javascript
Vue2 轮播图slide组件实例代码
May 31 Javascript
VUE v-model表单数据双向绑定完整示例
Jan 21 Javascript
vue实现滑动切换效果(仅在手机模式下可用)
Jun 29 Javascript
vue中实现拖动调整左右两侧div的宽度的示例代码
Jul 22 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
PHP中函数rand和mt_rand的区别比较
2012/12/26 PHP
使用淘宝IP库获取用户ip地理位置
2013/10/27 PHP
yii2 页面底部加载css和js的技巧
2016/04/21 PHP
jquery+thinkphp实现跨域抓取数据的方法
2016/10/15 PHP
PHP ElasticSearch做搜索实例讲解
2020/02/05 PHP
jquery+ashx无刷新GridView数据显示插件(实现分页、排序、过滤功能)
2010/04/25 Javascript
jquery中获取id值方法小结
2013/09/22 Javascript
JavaScript函数的4种调用方法详解
2014/04/22 Javascript
js获取浏览器基本信息大全
2014/11/27 Javascript
Javascript中call和apply函数的比较和使用实例
2015/02/03 Javascript
基于Javascript实现二级联动菜单效果
2016/03/04 Javascript
浅谈JavaScript中数组的增删改查
2016/06/20 Javascript
扩展jquery easyui tree的搜索树节点方法(推荐)
2016/10/28 Javascript
Angular 4.x 路由快速入门学习
2017/05/03 Javascript
JavaScript数组去重的多种方法(四种)
2017/09/19 Javascript
Vue波纹按钮组件制作
2018/04/30 Javascript
JS实现监控微信小程序的原理
2018/06/15 Javascript
对vue中v-on绑定自定事件的实例讲解
2018/09/06 Javascript
webstorm中配置Eslint的两种方式及差异比较详解
2018/10/19 Javascript
JS开发常用工具函数(小结)
2019/07/04 Javascript
layui table 获取分页 limit的方法
2019/09/20 Javascript
python函数参数*args**kwargs用法实例
2013/12/04 Python
python按键按住不放持续响应的实例代码
2019/07/17 Python
Python基于Socket实现简单聊天室
2020/02/17 Python
python UDF 实现对csv批量md5加密操作
2021/01/01 Python
联想韩国官网:Lenovo Korea
2018/05/10 全球购物
意大利时尚精品店:Nugnes 1920
2020/02/10 全球购物
什么是虚拟内存?虚拟内存有什么优势?
2016/02/09 面试题
高级方案规划工程师岗位职责
2013/11/29 职场文书
借款担保书范文
2014/05/13 职场文书
关于教师节的广播稿
2014/09/10 职场文书
大学生学习面向未来的赶考思想汇报
2014/09/12 职场文书
教师辞职信范文
2015/02/28 职场文书
SQL Server 数据库实验课第五周——常用查询条件
2021/04/05 SQL Server
Java中使用Filter过滤器的方法
2021/06/28 Java/Android
分享mysql的current_timestamp小坑及解决
2021/11/27 MySQL