支付宝小程序页面逻辑处理之事件(onTap,onTouchStart,onTouchMove,onTouchEnd)

我们知道在前端开发中事件是交互中最重要的概念。那么在支付宝小程序开发中也不例外,他是交互中非常重要的因素。但是在移动端由于界面和用户动作的原因我们常用的事件就是Tap和Touch事件。

关于这部分的视频教学请大家前往: https://edu.csdn.net/course/detail/5750

事件使用范例

页面代码:

<button id="clickbtn" data-user-name="Mr.Wei" type="primary" size="mini" onTap="defaultTap">点击我</button>

js代码:

defaultTap(event) {
    console.log(event.target.dataset.userName)
    console.log('点击者的姓名为:');
 },

这就是tap事件

常用的事件

类型触发条件
touchStart触摸动作开始
touchMove触摸后移动
touchEnd触摸动作结束
touchCancel触摸动作被打断,如来电提醒,弹窗
tap触摸后马上离开
longTap触摸后,超过300ms再离开

事件冒泡

时间冒泡其实解释起来是个非常抽象的东西。我用伪代码给大家解释下

<我是爷爷 闹钟响后=“看报”>
    <我是爸爸  闹钟响后=“上班”>
        <我是儿子 闹钟响后=“”上学>
        </我是儿子>
    </我是爸爸>
</我是爷爷>

那这三代都有一个时间就是“闹钟响后”。也就是说闹钟响后他们要发生相关的动作。
那么冒泡怎么解释呢:冒泡就好比是家里有一个声音非常大的闹钟放在儿子的房间,只要响了后爷爷、爸爸、儿子都去干自己对应的事情。这显然是不合理的,如果爷爷想要晚起呢?是不行的。
如何处理?处理的方法是在儿子,爷爷,爸爸的房间各装一个闹钟,自己设定响铃时间。在支付宝小程序中其实就是把onTap之类的事件换成catchTap。也可以理解为,当前组件捕获了tap时间不用向上传递了。

但是有一个问题如果儿子事件是onTap但是爸爸是catchTap那么当tap事件发生在儿子上时其实爸爸的tap事件也被触发了但是爸爸是catch的方式所以爷爷的tap时间不会被触发。

事件对象

defaultTap(event) {

对于每个事件有一个默认的事件对象。也就是event那么事件对象对我们有什么用呢?当然事件对象包含了丰富的信息。包括了tap时间发生的位置,发生在哪个元素上,发生的组件的id等。当然touch事件和tap事件的event数据略有差异,这个不用细说,大家最好的办法是用

console.log(event)

打印然后获得自己想要的数据。
对象结构为:

Object {type: "touchStart", timeStamp: 1535471473292, target: Object, currentTarget: Object, touches: Array(1)…}

给事件处理器传值

我们知道在原生js中我们可以这样传值

handle(name) {
    console.log(name)
}

但是在支付宝小程序中我们不能这样写。而是要给组件设置data-*属性。例如:

<button data-site="https://blog.csdn.net/marswill" data-user-name="Mr.Wei" type="primary" size="mini" onTap="defaultTap">点击我</button>

那么在这儿data-site和data-user-name就是我们附加的数据,怎么样获取呢?

handle(event) {
    console.log(event.target.dataset.site);
    console.log(event.target.dataset.userName); //注意中划线要处理成小驼峰法
}

事件这部分比较简单,如果有更多疑惑请查看我的视频教程https://edu.csdn.net/course/detail/5750或者给我发邮件交流。

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

MarsWill

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值