微信小程序实现bindtap等事件传参

 更新时间:2019年04月08日 11:23:25   作者:前端向朔  
这篇文章主要介绍了微信小程序实现bindtap等事件传参,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

之前一直以为微信小程序按钮点击事件传参是和web端相同,即在事件中写明所传递的参数即可,但是这样尝试过以后发现小程序的控制台报错,报所写的bindtap中参数错误,之后百度发现,小程序按钮点击这类事件时一般的处理方法是指明元素所在的id,bindtap只是写明函数名,例如,bindtap='setNumber',而不是bindtap='setNumber(1)',在js中只要写function(e).通过e可以获取所传过来元素的所有信息。

什么是事件

事件是视图层到逻辑层的通讯方式。 事件可以将用户的行为反馈到逻辑层进行处理。

事件可以绑定在组件上,当达到触发事件,就会执行逻辑层中对应的事件处理函数。

事件对象可以携带额外信息,如 id, dataset, touches。

看图,因为需要传递的数据比较多,所以我们通过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即可

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • 浅谈js控制li标签排序问题 js调用php函数的方法

    浅谈js控制li标签排序问题 js调用php函数的方法

    下面小编就为大家带来一篇浅谈js控制li标签排序问题 js调用php函数的方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-10-10
  • JavaScript实现扫雷小游戏

    JavaScript实现扫雷小游戏

    这篇文章主要为大家详细介绍了JavaScript实现扫雷小游戏,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-06-06
  • 一文详解JavaScript中的Mixin

    一文详解JavaScript中的Mixin

    类的出现最终使JavaScript非常容易使用继承法,JavaScript类比大多数人意识到的更强大,它是构建真正的mixins的良好基础,本文介绍JavaScript中的Mixin介绍的非常详细,需要的小伙伴可以参考阅读一下
    2023-04-04
  • js中的面向对象之对象常见创建方法详解

    js中的面向对象之对象常见创建方法详解

    这篇文章主要介绍了js中的面向对象之对象常见创建方法,结合实例形式较为详细的分析了JavaScript创建对象的四种常用方式,需要的朋友可以参考下
    2019-12-12
  • JS合并两个数组的3种方法详解

    JS合并两个数组的3种方法详解

    这篇文章主要介绍了JS合并两个数组的3种方法详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-10-10
  • JavaScript使用原型和原型链实现对象继承的方法详解

    JavaScript使用原型和原型链实现对象继承的方法详解

    这篇文章主要介绍了JavaScript使用原型和原型链实现对象继承的方法,简单讲述了javascript原型与原型链的原理,并结合实例形式详细分析了javascript中对象继承的常见实现技巧,需要的朋友可以参考下
    2017-04-04
  • 浅谈javascript中call()、apply()、bind()的用法

    浅谈javascript中call()、apply()、bind()的用法

    一直对Javascript中的apply/call/bind的用法很模糊,恰好看到了这篇文章。对三者之间的区别与联系算是有了比较清晰的认识。这里记录下来,分享给大家。
    2015-04-04
  • 微信小程序登录方法之授权登陆及获取微信用户手机号

    微信小程序登录方法之授权登陆及获取微信用户手机号

    最近改了一个公司项目,新增加了一个获取用户手机号功能,里面用到了关于获取用户信息和用户手机号的功能,下面这篇文章主要给大家介绍了关于微信小程序登录方法之授权登陆及获取微信用户手机号的相关资料,需要的朋友可以参考下
    2022-07-07
  • 基于JS实现省市联动效果代码分享

    基于JS实现省市联动效果代码分享

    这篇文章主要介绍了基于JS实现省市联动效果代码的相关资料,非常实用,在日常项目开发过程中经常遇到此需求,下面小编给大家分享实现代码,需要的朋友可以参考下
    2016-06-06
  • 使用BootStrap实现悬浮窗口的效果

    使用BootStrap实现悬浮窗口的效果

    本文给大家分享使用BootStrap实现悬浮窗口的效果,神奇的 bootstrap就自带了这个功能。所以就用bootstrap的popover插件做了,效果还不错,感兴趣的朋友参考下吧
    2016-12-12

最新评论