微信小程序实现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.ajax传递中文参数的解决方法 推荐
Mar 28 Javascript
理清apply(),call()的区别和关系
Aug 14 Javascript
Jquery的基本对象转换和文档加载用法实例
Feb 25 Javascript
js数组去重的方法汇总
Jul 29 Javascript
深入探究JavaScript中for循环的效率问题及相关优化
Mar 13 Javascript
jQuery插件 Jqplot图表实例
Jun 18 Javascript
AngularJS extend用法详解及实例代码
Nov 15 Javascript
jquery UI Datepicker时间控件冲突问题解决
Dec 16 Javascript
Angular动画实现的2种方式以及添加购物车动画实例代码
Aug 09 Javascript
vue-cli3项目升级到vue-cli4 的方法总结
Mar 19 Javascript
Taro UI框架开发小程序实现左滑喜欢右滑不喜欢效果的示例代码
May 18 Javascript
js作用域及作用域链工作引擎
Jul 07 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
Array of country list in PHP with Zend Framework
2011/10/17 PHP
ThinkPHP中使用ajax接收json数据的方法
2014/12/18 PHP
PHP 信号管理知识整理汇总
2017/02/19 PHP
js DOM模型操作
2009/12/28 Javascript
JavaScript中SQL语句的应用实现
2010/05/04 Javascript
javascript 判断数组是否已包含了某个元素的函数
2010/05/30 Javascript
javascript 单例/单体模式(Singleton)
2011/04/07 Javascript
jQuery 一个图片切换的插件
2011/10/09 Javascript
bootstrap输入框组代码分享
2016/06/07 Javascript
详解Javascript函数声明与递归调用
2016/10/22 Javascript
原生javascript实现的ajax异步封装功能示例
2016/11/03 Javascript
bootstrap datetimepicker日期插件使用方法
2017/01/13 Javascript
100行代码理解和分析vue2.0响应式架构
2017/03/09 Javascript
使用Dropzone.js上传的示例代码
2017/10/10 Javascript
Node实战之不同环境下配置文件使用教程
2018/01/02 Javascript
python正则分组的应用
2013/11/10 Python
天翼开放平台免费短信验证码接口使用实例
2013/12/18 Python
python使用cookielib库示例分享
2014/03/03 Python
Python实现冒泡,插入,选择排序简单实例
2014/08/18 Python
Python中的Django基本命令实例详解
2018/07/15 Python
Python3爬虫之自动查询天气并实现语音播报
2019/02/21 Python
python中的反斜杠问题深入讲解
2019/08/12 Python
python 内置函数汇总详解
2019/09/16 Python
Python算法中的时间复杂度问题
2019/11/19 Python
python pyenv多版本管理工具的使用
2019/12/23 Python
分享CSS3中必须要知道的10个顶级命令
2012/04/26 HTML / CSS
美国最大的户外装备和服装购物网站:Backcountry
2019/10/15 全球购物
一套PHP的笔试题
2013/05/31 面试题
枚举与#define宏的区别
2014/04/30 面试题
大学本科毕业生求职简历的自我评价
2013/10/09 职场文书
节水倡议书范文
2014/04/15 职场文书
和睦家庭事迹
2014/05/14 职场文书
环保倡议书50字
2014/05/15 职场文书
2015年办公室文员工作总结
2015/04/24 职场文书
Java8中Stream的一些神操作
2021/11/02 Java/Android
CentOS7设置ssh服务以及端口修改方式
2022/12/24 Servers