• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# 通用事件
2
3> ![icon-note.gif](public_sys-resources/icon-note.gif) **说明:**
4> 从API version 4开始支持。后续版本如有新增内容,则采用上角标单独标记该内容的起始版本。
5
6## 事件说明
7
8- 事件绑定在组件上,当组件达到事件触发条件时,会执行JS中对应的事件回调函数,实现页面UI视图和页面JS逻辑层的交互;
9
10- 事件回调函数中通过参数可以携带额外的信息,如组件上的数据对象dataset,事件特有的回调参数。
11
12
13相对于私有事件,大部分组件都可以绑定如下事件。
14
15
16| 名称                     | 参数       | 描述                                                         | 是否支持冒泡    | 是否支持捕获    |
17| ------------------------ | ---------- | ------------------------------------------------------------ | --------------- | --------------- |
18| touchstart               | TouchEvent | 手指刚触摸屏幕时触发该事件。<br>> **说明:** TouchEvent具体可参考表2 TouchEvent对象属性列表 | 是<sup>5+</sup> | 是<sup>5+</sup> |
19| touchmove                | TouchEvent | 手指触摸屏幕后移动时触发该事件。                             | 是<sup>5+</sup> | 是<sup>5+</sup> |
20| touchcancel              | TouchEvent | 手指触摸屏幕中动作被打断时触发该事件。                       | 是<sup>5+</sup> | 是<sup>5+</sup> |
21| touchend                 | TouchEvent | 手指触摸结束离开屏幕时触发该事件。                           | 是<sup>5+</sup> | 是<sup>5+</sup> |
22| click                    | -          | 点击动作触发该事件。                                         | 是<sup>6+</sup> | 否              |
23| doubleclick<sup>7+</sup> | -          | 双击动作触发该事件                                           | 否              | 否              |
24| longpress                | -          | 长按动作触发该事件。                                         | 否              | 否              |
25| swipe<sup>5+</sup>       | SwipeEvent | 组件上快速滑动后触发该事件。<br/>> **说明:** SwipeEvent具体可参考表6 SwipeEvent 基础事件对象属性列表 | 否              | 否              |
26| attached<sup>6+</sup>    | -          | 当前组件节点挂载在渲染树后触发。                             | 否              | 否              |
27| detached<sup>6+</sup>    | -          | 当前组件节点从渲染树中移除后触发。                           | 否              | 否              |
28| pinchstart<sup>7+</sup>  | PinchEvent | 手指开始执行捏合操作时触发该事件。<br/>> **说明:** PinchEvent具体可参考表7 PinchEvent 对象属性列表 | 否              | 否              |
29| pinchupdate<sup>7+</sup> | PinchEvent | 手指执行捏合操作过程中触发该事件。                           | 否              | 否              |
30| pinchend<sup>7+</sup>    | PinchEvent | 手指捏合操作结束离开屏幕时触发该事件。                       | 否              | 否              |
31| pinchcancel<sup>7+</sup> | PinchEvent | 手指捏合操作被打断时触发该事件。                             | 否              | 否              |
32| dragstart<sup>7+</sup>   | DragEvent  | 用户开始拖拽时触发该事件。<br/>> **说明:** DragEvent具体可参考表8 DragEvent对象属性列表 | 否              | 否              |
33| drag<sup>7+</sup>        | DragEvent  | 拖拽过程中触发该事件。                                       | 否              | 否              |
34| dragend<sup>7+</sup>     | DragEvent  | 用户拖拽完成后触发。                                         | 否              | 否              |
35| dragenter<sup>7+</sup>   | DragEvent  | 进入释放目标时触发该事件。                                   | 否              | 否              |
36| dragover<sup>7+</sup>    | DragEvent  | 在释放目标内拖动时触发。                                     | 否              | 否              |
37| dragleave<sup>7+</sup>   | DragEvent  | 离开释放目标区域时触发。                                     | 否              | 否              |
38| drop<sup>7+</sup>        | DragEvent  | 在可释放目标区域内释放时触发。                               | 否              | 否              |
39
40
41> ![icon-note.gif](public_sys-resources/icon-note.gif) **说明:**
42> 除上述事件外,其他事件均为非冒泡事件,如[input的change事件](../arkui-js/js-components-basic-input.md#事件),详见各个组件。
43
44**表1** BaseEvent对象属性列表
45
46| 属性        | 类型     | 说明                          |
47| --------- | ------ | --------------------------- |
48| type      | string | 当前事件的类型,比如click、longpress等。 |
49| timestamp | number | 该事件触发时的时间戳。                 |
50
51**表2** TouchEvent对象属性列表(继承BaseEvent)
52
53| 属性             | 类型                     | 说明                                       |
54| -------------- | ---------------------- | ---------------------------------------- |
55| touches        | Array&lt;TouchInfo&gt; | 触摸事件时的属性集合,包含屏幕触摸点的信息数组。                 |
56| changedTouches | Array&lt;TouchInfo&gt; | 触摸事件时的属性集合,包括产生变化的屏幕触摸点的信息数组。数据格式和touches一样。该属性表示有变化的触摸点,如从无变有,位置变化,从有变无。例如用户手指刚接触屏幕时,touches数组中有数据,但changedTouches无数据。 |
57
58**表3** TouchInfo
59
60| 属性                 | 类型     | 说明                             |
61| ------------------ | ------ | ------------------------------ |
62| globalX            | number | 距离屏幕左上角(不包括状态栏)横向距离。屏幕的左上角为原点。 |
63| globalY            | number | 距离屏幕左上角(不包括状态栏)纵向距离。屏幕的左上角为原点。 |
64| localX             | number | 距离被触摸组件左上角横向距离。组件的左上角为原点。      |
65| localY             | number | 距离被触摸组件左上角纵向距离。组件的左上角为原点。      |
66| size               | number | 触摸接触面积。                        |
67| force<sup>6+</sup> | number | 接触力信息。                         |
68
69**表6** SwipeEvent 基础事件对象属性列表(继承BaseEvent)
70
71| 属性                    | 类型     | 说明                                       |
72| --------------------- | ------ | ---------------------------------------- |
73| direction             | string | 滑动方向,可能值有:<br/>1.&nbsp;left:向左滑动;<br/>2.&nbsp;right:向右滑动;<br/>3.&nbsp;up:向上滑动;<br/>4.&nbsp;down:向下滑动。 |
74| distance<sup>6+</sup> | number | 在滑动方向上的滑动距离。                             |
75
76**表7** PinchEvent 对象属性列表<sup>7+</sup>
77
78| 属性           | 类型     | 说明             |
79| ------------ | ------ | -------------- |
80| scale        | number | 缩放比例           |
81| pinchCenterX | number | 捏合中心点X轴坐标,单位px |
82| pinchCenterY | number | 捏合中心点Y轴坐标,单位px |
83
84**表8** DragEvent对象属性列表(继承BaseEvent)<sup>7+</sup>
85
86| 属性        | 类型     | 说明               |
87| --------- | ------ | ---------------- |
88| type      | string | 事件名称。            |
89| globalX   | number | 距离屏幕左上角坐标原点横向距离。 |
90| globalY   | number | 距离屏幕左上角坐标原点纵向距离。 |
91| timestamp | number | 时间戳。             |
92
93## 事件对象
94
95当组件触发事件后,事件回调函数默认会收到一个事件对象,通过该事件对象可以获取相应的信息。
96
97**target对象:**
98
99| 属性                   | 类型     | 说明                                       |
100| -------------------- | ------ | ---------------------------------------- |
101| dataSet<sup>6+</sup> | Object | 组件上通过通用属性设置的[data-*](../arkui-js/js-components-common-attributes.md)的自定义属性组成的集合。 |
102
103**示例:**
104
105```
106<!-- xxx.hml -->
107<div>
108  <div data-a="dataA" data-b="dataB"
109    style="width: 100%; height: 50%; background-color: saddlebrown;"@touchstart='touchstartfunc'></div>
110</div>
111```
112
113```
114// xxx.js
115export default {
116  touchstartfunc(msg) {
117    console.info(`on touch start, point is: ${msg.touches[0].globalX}`);
118    console.info(`on touch start, data is: ${msg.target.dataSet.a}`);
119  }
120}
121```
122