W3Cschool
恭喜您成為首批注冊(cè)用戶
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
支付寶小程序框架events
事件
什么是事件?
id
, dataset
, touches
。事件分為冒泡事件和非冒泡事件:
事件綁定的寫(xiě)法同組件的屬性,以 key
、value
的形式。
key
以on
或catch
開(kāi)頭,然后跟上事件的類(lèi)型,onTap
, catchTap
value
是一個(gè)字符串,需要在對(duì)應(yīng)的 Page
中定義同名的函數(shù)。不然當(dāng)觸發(fā)事件的時(shí)候會(huì)報(bào)錯(cuò)。
on
事件綁定不會(huì)阻止冒泡事件向上冒泡,catch
事件綁定可以阻止冒泡事件向上冒泡。<view id="outter" onTap="handleTap1">
view1
<view id="middle" catchTap="handleTap2">
view2
<view id="inner" onTap="handleTap3">
view3
</view>
</view>
</view>
上面代碼中,點(diǎn)擊 view3
會(huì)先后觸發(fā) handleTap3
和 handleTap2
(因?yàn)?tap
事件會(huì)冒泡到 view2
,而 view2
阻止了 tap
事件冒泡,不再向父節(jié)點(diǎn)傳遞),點(diǎn)擊 view2
會(huì)觸發(fā) handleTap2
,點(diǎn)擊 view1
會(huì)觸發(fā) handleTap1
。
冒泡事件列表:
類(lèi)型 | 觸發(fā)條件 |
---|---|
touchStart | 觸摸動(dòng)作開(kāi)始 |
touchMove | 觸摸后移動(dòng) |
touchEnd | 觸摸動(dòng)作結(jié)束 |
touchcancel | 觸摸動(dòng)作被打斷,如來(lái)電提醒,彈窗 |
tap | 觸摸后馬上離開(kāi) |
longTap | 觸摸后,超過(guò)300ms再離開(kāi) |
其他事件不冒泡
(1)在組件中綁定一個(gè)事件處理函數(shù)。
如onTap
,當(dāng)用戶點(diǎn)擊該組件的時(shí)候會(huì)在該頁(yè)面對(duì)應(yīng)的Page
中找到對(duì)應(yīng)的事件處理函數(shù)。
<view id="tapTest" data-hi="Alipay" onTap="tapName">
<view id="tapTestInner" data-hi="AlipayInner">
Click me!
</view>
</view>
(2)在相應(yīng)的Page定義中寫(xiě)上相應(yīng)的事件處理函數(shù),參數(shù)是event。
Page({
tapName(event) {
console.log(event)
}
})
可以看到 log 出來(lái)的信息大致如下。
{
"type":"tap",
"timeStamp":13245456,
"target": {
"id": "tapTestInner",
"dataset": {
"hi":"AlipayInner"
}
},
"currentTarget": {
"id": "tapTest",
"dataset": {
"hi":"Alipay"
}
},
"detail": {
"x":24,
"y":67
},
"touches":[{
"identifier":0,
"pageX":54,
"pageY":83,
"clientX":13,
"clientY":56
}],
"changedTouches":[{
"identifier":0,
"pageX":43,
"pageY":67,
"clientX":27,
"clientY":45
}]
}
當(dāng)組件觸發(fā)事件時(shí),邏輯層綁定該事件的處理函數(shù)會(huì)收到一個(gè)事件對(duì)象。
(1)BaseEvent
BaseEvent
基礎(chǔ)事件對(duì)象屬性列表。
屬性 | 類(lèi)型 | 描述 |
---|---|---|
type | String | 事件類(lèi)型 |
timeStamp | Integer | 事件生成時(shí)的時(shí)間戳 |
target | Object | 觸發(fā)事件的組件的屬性值集合 |
(2)CustomEvent
CustomEvent
自定義事件對(duì)象屬性列表(繼承BaseEvent
)。
屬性 | 類(lèi)型 | 描述 |
---|---|---|
detail | Object | 額外的信息 |
(3)TouchEvent
TouchEvent
觸摸事件對(duì)象屬性列表(繼承BaseEvent
)。
屬性 | 類(lèi)型 | 描述 |
---|---|---|
touches | Array | 當(dāng)前停留在屏幕中的觸摸點(diǎn)信息的數(shù)組 |
changedTouches | Array | 當(dāng)前變化的觸摸點(diǎn)信息的數(shù)組 |
(4)Type
type
:代表事件的類(lèi)型。
(5)timeStamp
timeStamp
:頁(yè)面打開(kāi)到觸發(fā)事件所經(jīng)過(guò)的毫秒數(shù)。
(6)target
target
:觸發(fā)事件的源組件。
屬性 | 類(lèi)型 | 描述 |
---|---|---|
id | String | 事件源組件的id |
tagName | String | 當(dāng)前組件的類(lèi)型 |
dataset | Object | 事件源組件上由data-開(kāi)頭的自定義屬性的集合 |
在組件中可以定義數(shù)據(jù),這些數(shù)據(jù)將會(huì)通過(guò)事件傳遞給邏輯層。
書(shū)寫(xiě)方式: 以data-
開(kāi)頭,多個(gè)單詞由連字符-鏈接,不能有大寫(xiě)(大寫(xiě)會(huì)自動(dòng)轉(zhuǎn)成小寫(xiě)),如data-element-type
,最終會(huì)在event.target.dataset
中會(huì)將連字符轉(zhuǎn)成駝峰elementType
。
示例代碼:
<view data-alpha-beta="1" data-alphaBeta="2" onTap="bindViewTap"> DataSet Test </view>
Page({
bindViewTap:function(event){
event.target.dataset.alphaBeta === 1 // - 會(huì)轉(zhuǎn)為駝峰寫(xiě)法
event.target.dataset.alphabeta === 2 // 大寫(xiě)會(huì)轉(zhuǎn)為小寫(xiě)
}
})
touches
是一個(gè)數(shù)組,每個(gè)元素為一個(gè)Touch對(duì)象(canvas
觸摸事件中攜帶的touches
是 CanvasTouch
的數(shù)組),表示當(dāng)前停留在屏幕上的觸摸點(diǎn)。
(1)Touch 對(duì)象
屬性 | 類(lèi)型 | 描述 |
---|---|---|
identifier | Number | 觸摸點(diǎn)的標(biāo)識(shí)符 |
pageX, pageY | Number | 距離文檔左上角的距離,左上角為原點(diǎn) ,橫向?yàn)閄軸,縱向?yàn)閅軸 |
clientX, clientY | Number | 距離頁(yè)面可顯示的區(qū)域(屏幕除去導(dǎo)航條)左上角距離,橫向?yàn)閄軸,縱向?yàn)閅軸 |
(2)CanvasTouch 對(duì)象
屬性 | 類(lèi)型 | 描述 |
---|---|---|
identifier | Number | 觸摸點(diǎn)的標(biāo)識(shí)符 |
x, y | Number | 距離 Canvas 左上角的距離,Canvas 的左上角為原點(diǎn) ,橫向?yàn)閄軸,縱向?yàn)閅軸 |
(3)changedTouches
changedTouches
數(shù)據(jù)格式同touches
。 表示有變化的觸摸點(diǎn),如從無(wú)變有(touchstart
),位置變化(touchmove
),從有變無(wú)(touchend
、touchcancel
)。
(4)detail
自定義事件所攜帶的數(shù)據(jù),如表單組件的提交事件會(huì)攜帶用戶的輸入信息,媒體的錯(cuò)誤事件會(huì)攜帶錯(cuò)誤信息,詳細(xì)的描述請(qǐng)參考組件定義中各個(gè)事件的定義。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號(hào)-3|閩公網(wǎng)安備35020302033924號(hào)
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號(hào)
聯(lián)系方式:
更多建議: