不二如是 发表于 2018-5-28 08:03:15

023 ∞ 详述#事件

本帖最后由 不二如是 于 2018-5-28 08:14 编辑

http://xxx.fishc.com/forum/201805/02/171248f4zdsipf6d4qjnjl.png

上一件很简单的介绍事件对象,这次我们来好好地介绍一下事件。

首先到底什么是事件呢?

从功能上说:
事件是视图层到逻辑层的通讯方式。

事件可以将用户的行为反馈到逻辑层进行处理。

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

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

那怎么使用呢?

很简单,我们可以:
在组件中绑定一个事件处理函数。

在相应的Page定义中写上相应的事件处理函数,参数是event。

如bindtap,当用户点击该组件的时候会在该页面对应的Page中找到相应的事件处理函数。

示例:
<view id="tapTest" data-hi="WeChat" bindtap="tapName"> Click me! </view>

Page({
tapName: function(event) {
    console.log(event)
}
})


可以看到log出来的信息大致如下:




分类

事件分为冒泡事件和非冒泡事件:
冒泡事件:当一个组件上的事件被触发后,该事件会向父节点传递。

非冒泡事件:当一个组件上的事件被触发后,该事件不会向父节点传递。

WXML的冒泡事件列表:

类型        触发条件
touchstart        手指触摸动作开始
touchmove        手指触摸后移动
touchcancel        手指触摸动作被打断,如来电提醒,弹窗
touchend        手指触摸动作结束
tap        手指触摸后马上离开
longpress        手指触摸后,超过350ms再离开,如果指定了事件回调函数并触发了这个事件,tap事件将不被触发(基础库 1.5.0 开始支持,低版本需做兼容处理。)
longtap        手指触摸后,超过350ms再离开(推荐使用longpress事件代替)
transitionend        会在 WXSS transition 或 wx.createAnimation 动画结束后触发
animationstart        会在一个 WXSS animation 动画开始时触发
animationiteration        会在一个 WXSS animation 一次迭代结束时触发
animationend        会在一个 WXSS animation 动画完成时触发


除上表之外的其他组件自定义事件如无特殊声明都是非冒泡事件。

如<form/>的submit事件,<input/>的input事件,<scroll-view/>的scroll事件。



课后作业


1、下列对事件的描述哪一条是错误的?
a.事件可以将用户的行为反馈到视图层进行处理。
b.事件可以绑定在组件上,当达到触发事件,就会执行逻辑层中对应的事件处理函数。
c.事件是视图层到逻辑层的通讯方式。
d.事件对象可以携带额外信息,如 id, dataset, touches。

2、以下哪个选项是冒泡事件的正确描述?
a.当一个组件上的事件被触发后,该事件会向父节点传递。
b.当一个组件上的事件被触发后,该事件不会向父节点传递。



答案:
**** Hidden Message *****



如果有收获,别忘了评分{:10_281:} :

http://xxx.fishc.com/forum/201709/19/094516hku92k2g4kefz8ms.gif

这位鱼油,如果喜欢小程序,请订阅 专辑☞(传送门)(不喜欢更要订阅{:10_297:} )

http://xxx.fishc.com/forum/201803/21/151715umqz1qoywp11wjbq.gif

ShmilyLee 发表于 2022-5-30 10:10:58

aa
页: [1]
查看完整版本: 023 ∞ 详述#事件