微信小程序实现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 相关文章推荐
js实现弹出窗口、页面变成灰色并不可操作的例子分享
May 10 Javascript
js跨域请求的5中解决方式
Jul 02 Javascript
jQuery实现点击按钮弹出可关闭层的浮动层插件
Sep 19 Javascript
前端开发必知的15个jQuery小技巧
Jan 22 Javascript
Bootstrap.css与layDate日期选择样式起冲突的解决办法
Apr 07 Javascript
jQuery设置图片等比例缩小的方法
Apr 29 jQuery
微信小程序实现张图片合成为一张并下载
Jul 16 Javascript
node.js使用yargs处理命令行参数操作示例
Feb 11 Javascript
vue+vuex+axios从后台获取数据存入vuex,组件之间共享数据操作
Jul 31 Javascript
解决vue刷新页面以后丢失store的数据问题
Aug 11 Javascript
关于ES6尾调用优化的使用
Sep 11 Javascript
js实现弹幕墙效果
Dec 10 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
thinkphp的CURD和查询方式介绍
2013/12/19 PHP
php中adodbzip类实例
2014/12/08 PHP
php连接oracle数据库的核心步骤
2016/05/26 PHP
jQuery第三课 修改元素属性及内容的代码
2010/03/14 Javascript
jquery网页回到顶部效果(图标渐隐,自写)
2014/06/16 Javascript
使用JavaScript+canvas实现图片裁剪
2015/01/30 Javascript
Javascript核心读书有感之语言核心
2015/02/01 Javascript
window.setInterval()方法的定义和用法及offsetLeft与style.left的区别
2015/11/11 Javascript
JavaScript位置与大小(1)之正确理解和运用与尺寸大小相关的DOM属性
2015/12/26 Javascript
JS常用倒计时代码实例总结
2017/02/07 Javascript
DataTables添加额外的查询参数和删除columns等无用参数实例
2017/07/04 Javascript
vue.js如何将echarts封装为组件一键使用详解
2017/10/10 Javascript
jQuery中库的引用方法
2018/01/06 jQuery
详解Vue webapp项目通过HBulider打包原生APP
2018/06/29 Javascript
zepto.js 实时监听输入框的方法
2018/12/04 Javascript
vue 框架下自定义滚动条(easyscroll)实现方法
2019/08/29 Javascript
vue-cli4项目开启eslint保存时自动格式问题
2020/07/13 Javascript
基于JavaScript实现简单抽奖功能代码实例
2020/10/20 Javascript
400多行Python代码实现了一个FTP服务器
2012/05/10 Python
浅谈python3发送post请求参数为空的情况
2018/12/28 Python
django 自定义过滤器的实现
2019/02/26 Python
Python中注释(多行注释和单行注释)的用法实例
2019/08/28 Python
python爬虫今日热榜数据到txt文件的源码
2021/02/23 Python
彻底弄明白CSS3的Media Queries(跨平台设计)
2010/07/27 HTML / CSS
CSS3使用transition实现的鼠标悬停淡入淡出
2015/01/09 HTML / CSS
详解CSS3弹性伸缩盒
2020/09/21 HTML / CSS
CSS3中的弹性布局em运用入门详解 1em等于多少像素
2021/02/08 HTML / CSS
巴西最大的体育用品商城:Netshoes巴西
2016/11/29 全球购物
瑞典领先的汽车零部件网上零售商:bildelaronline24.se
2017/01/12 全球购物
大学生入党自我鉴定
2013/10/31 职场文书
税务干部鉴定材料
2014/02/11 职场文书
中学教师师德承诺书
2014/05/23 职场文书
代领毕业证委托书
2014/08/02 职场文书
周年庆典答谢词
2015/01/20 职场文书
诗词赏析-(浣溪沙)
2019/08/13 职场文书
关于vue中如何监听数组变化
2021/04/28 Vue.js