微信小程序实现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 相关文章推荐
IE之动态添加DOM节点触发window.resize事件
Jul 27 Javascript
js判断输入是否为数字的具体实例
Aug 03 Javascript
javascript中数组中求最大值示例代码
Dec 18 Javascript
javascript中的循环语句for语句深入理解
Apr 04 Javascript
JQuery弹出炫丽对话框的同时让背景变灰色
May 22 Javascript
Angularjs基础知识及示例汇总
Jan 22 Javascript
javascript文本框内输入文字倒计数的方法
Feb 24 Javascript
JavaScript DOM基础
Apr 13 Javascript
jquery插件NProgress.js制作网页加载进度条
Jun 05 Javascript
JS将滑动门改为选项卡(需鼠标点击)的实现方法
Sep 27 Javascript
angular 实时监听input框value值的变化触发函数方法
Aug 31 Javascript
微信小程序视图容器(swiper)组件创建轮播图
Jun 19 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源码之explode使用说明
2011/08/05 PHP
php计算当前程序执行时间示例
2014/04/24 PHP
PHP实现接收二进制流转换成图片的方法
2017/01/10 PHP
PHP实现APP微信支付的实例讲解
2018/02/10 PHP
IE中jscript/javascript的条件编译
2006/09/07 Javascript
js不完美解决click和dblclick事件冲突问题
2012/07/16 Javascript
JS获取屏幕,浏览器窗口大小,网页高度宽度(实现代码)
2013/12/17 Javascript
jQuery中:first选择器用法实例
2014/12/30 Javascript
JavaScript学习笔记整理之引用类型
2016/01/22 Javascript
jquery基础知识第一讲之认识jquery
2016/03/17 Javascript
深入理解javascript中的 “this”
2017/01/17 Javascript
JS ES6中setTimeout函数的执行上下文示例
2017/04/27 Javascript
React Js 微信禁止复制链接分享禁止隐藏右上角菜单功能
2017/05/26 Javascript
ReactNative之FlatList的具体使用方法
2017/11/29 Javascript
详解微信小程序的 request 封装示例
2018/08/21 Javascript
vue仿element实现分页器效果
2018/09/13 Javascript
100行代码实现一个vue分页组功能
2018/11/06 Javascript
微信小程序实现批量倒计时功能
2020/11/01 Javascript
vuex实现购物车的增加减少移除
2020/06/28 Javascript
使用Python生成url短链接的方法
2015/05/04 Python
Python使用post及get方式提交数据的实例
2019/01/24 Python
python自动循环定时开关机(非重启)测试
2019/08/26 Python
python+adb命令实现自动刷视频脚本案例
2020/04/23 Python
django 模型中的计算字段实例
2020/05/19 Python
CSS3与动画有关的属性transition、animation、transform对比(史上最全版)
2017/08/18 HTML / CSS
HTML5+CSS3 实现灵动的动画 TAB 切换效果(DEMO)
2017/09/15 HTML / CSS
Willer台湾:日本高速巴士/夜行巴士预约
2017/07/09 全球购物
美国照明、家居装饰和家具购物网站:Bellacor
2017/09/20 全球购物
个人实习生的自我评价
2014/02/16 职场文书
自我鉴定书
2014/03/24 职场文书
献爱心捐款倡议书
2014/05/14 职场文书
白酒营销策划方案
2014/08/17 职场文书
2016猴年春节问候语
2015/11/11 职场文书
七年级作文之游记
2019/12/11 职场文书
解决numpy数组互换两行及赋值的问题
2021/04/17 Python
P站美图推荐——变身女主角特辑
2022/03/20 日漫