微信小程序開發(fā)教程(基礎(chǔ)篇)9-事件

前面說到瘦麸,微信小程序框架是邏輯層與UI層分析的設(shè)計(jì)方式,這種設(shè)計(jì)方式需要解決兩個(gè)問題

UI層響應(yīng)邏輯層邏輯和數(shù)據(jù)的變化
UI層將用戶的操作反饋到邏輯層

其中前面講到的數(shù)據(jù)綁定解決了第一個(gè)問題,而事件則解決第二個(gè)問題

什么是事件
事件是視圖層到邏輯層的通訊方式荣刑。
事件可以將用戶的行為反饋到邏輯層進(jìn)行處理。
事件可以綁定在組件上,當(dāng)達(dá)到觸發(fā)事件庇谆,就會(huì)執(zhí)行邏輯層中對(duì)應(yīng)的事件處理函數(shù)。
事件對(duì)象可以攜帶額外信息凭疮,如 id, dataset, touches饭耳。

總結(jié)下來事件就是指發(fā)生了一些事情,通常是用戶進(jìn)行了一些操作执解,如點(diǎn)擊某個(gè)按鈕或在手機(jī)屏幕上滑動(dòng)了手指寞肖。當(dāng)事件發(fā)生時(shí),框架會(huì)調(diào)用事件處理函數(shù)(如果有的話)衰腌,這樣就可以實(shí)現(xiàn)對(duì)用戶操作的響應(yīng)新蟆。

事件綁定

通過事件綁定來完成對(duì)用戶操作的響應(yīng),比如要處理view標(biāo)簽的tap事件右蕊,在標(biāo)簽屬性中添加bindtap = 'tapName', 然后在.js中添加tapName函數(shù)

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

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

event對(duì)象包含一些關(guān)于事件的數(shù)據(jù):

target:觸發(fā)事件的組件
currentTarget:當(dāng)前組件
type:事件類型
timeStamp:時(shí)間戳(頁(yè)面打開到觸發(fā)事件所經(jīng)過的毫秒數(shù))
touches:包含觸摸點(diǎn)的數(shù)組(多點(diǎn)觸控)
changedTouches :發(fā)生改變的觸摸點(diǎn)的數(shù)組(多點(diǎn)觸控)
detail:額外的自定義信息

冒泡事件和非冒泡事件

為什么會(huì)有targetcurrentTarget之分呢琼稻,這是由于事件分為兩類,冒泡事件非冒泡事件

冒泡事件:當(dāng)一個(gè)組件上的事件被觸發(fā)后饶囚,該事件會(huì)向父節(jié)點(diǎn)傳遞帕翻。
非冒泡事件:當(dāng)一個(gè)組件上的事件被觸發(fā)后,該事件不會(huì)向父節(jié)點(diǎn)傳遞坯约。

類型 觸發(fā)條件
touchstart 手指觸摸動(dòng)作開始
touchmove 手指觸摸后移動(dòng)
touchcancel 手指觸摸動(dòng)作被打斷熊咽,如來電提醒,彈窗
touchend 手指觸摸動(dòng)作結(jié)束
tap 手指觸摸后馬上離開
longtap 手指觸摸后闹丐,超過350ms再離開

其中tap事件是屬于冒泡事件(這也是為什么上面例子中的event會(huì)包含currentTarget)横殴,另外其它的冒泡事件還包括

類型 觸發(fā)條件
touchstart 手指觸摸動(dòng)作開始
touchmove 手指觸摸后移動(dòng)
touchcancel 手指觸摸動(dòng)作被打斷,如來電提醒,彈窗
touchend 手指觸摸動(dòng)作結(jié)束
tap 手指觸摸后馬上離開
longtap 手指觸摸后衫仑,超過350ms再離開

為什么需要冒泡事件

有了冒泡事件梨与,就可以更加方便的實(shí)現(xiàn)一些功能。

比如程序有一個(gè)視圖文狱,包含用戶頭像和姓名粥鞋,當(dāng)用戶點(diǎn)擊頭像或姓名時(shí),進(jìn)入用戶詳情頁(yè)面瞄崇。如果沒有冒泡事件呻粹,就需要處理頭像和姓名的點(diǎn)擊事件,而現(xiàn)在只需在外層包裹一個(gè)組件苏研,并處理該組件的事件即可等浊。

阻止事件冒泡

在有些情況下可能會(huì)希望阻止事件的冒泡行為,可以使用catch事件綁定摹蘑,如catchtap筹燕,就可以阻止事件的冒泡行為。

可以通過下面的代碼示例來加深對(duì)冒泡事件的理解

//.wxml
<view id="outter" bindtap="handleTapOutter">
  我是父親節(jié)點(diǎn)
  <view id="middle" catchtap="handleTapMiddle">
    我是兒子節(jié)點(diǎn)
    <view id="inner" bindtap="handleInner">
      我是孫子節(jié)點(diǎn)
    </view>
  </view>
</view>

//.js
Page({
  handleTapOutter: function(event) {
    console.log("父親節(jié)點(diǎn)被點(diǎn)擊")
  },
  handleTapMiddle: function(event) {
    console.log("兒子節(jié)點(diǎn)被點(diǎn)擊")
  },
  handleInner: function(event) {
    console.log("孫子節(jié)點(diǎn)被點(diǎn)擊")
  },
})

嘗試修改各級(jí)節(jié)點(diǎn)的tap事件綁定方式衅鹿,查看輸出的日志會(huì)有什么變化撒踪。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市大渤,隨后出現(xiàn)的幾起案子制妄,更是在濱河造成了極大的恐慌,老刑警劉巖泵三,帶你破解...
    沈念sama閱讀 219,188評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件忍捡,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡切黔,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,464評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門具篇,熙熙樓的掌柜王于貴愁眉苦臉地迎上來纬霞,“玉大人,你說我怎么就攤上這事驱显∈撸” “怎么了?”我有些...
    開封第一講書人閱讀 165,562評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵埃疫,是天一觀的道長(zhǎng)伏恐。 經(jīng)常有香客問我,道長(zhǎng)栓霜,這世上最難降的妖魔是什么翠桦? 我笑而不...
    開封第一講書人閱讀 58,893評(píng)論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上销凑,老公的妹妹穿的比我還像新娘丛晌。我一直安慰自己,他們只是感情好斗幼,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,917評(píng)論 6 392
  • 文/花漫 我一把揭開白布澎蛛。 她就那樣靜靜地躺著,像睡著了一般蜕窿。 火紅的嫁衣襯著肌膚如雪谋逻。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,708評(píng)論 1 305
  • 那天桐经,我揣著相機(jī)與錄音毁兆,去河邊找鬼。 笑死次询,一個(gè)胖子當(dāng)著我的面吹牛荧恍,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播屯吊,決...
    沈念sama閱讀 40,430評(píng)論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼送巡,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了盒卸?” 一聲冷哼從身側(cè)響起骗爆,我...
    開封第一講書人閱讀 39,342評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎蔽介,沒想到半個(gè)月后摘投,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,801評(píng)論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡虹蓄,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,976評(píng)論 3 337
  • 正文 我和宋清朗相戀三年犀呼,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片薇组。...
    茶點(diǎn)故事閱讀 40,115評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡外臂,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出律胀,到底是詐尸還是另有隱情宋光,我是刑警寧澤,帶...
    沈念sama閱讀 35,804評(píng)論 5 346
  • 正文 年R本政府宣布炭菌,位于F島的核電站罪佳,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏黑低。R本人自食惡果不足惜赘艳,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,458評(píng)論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧第练,春花似錦阔馋、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,008評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至婴梧,卻和暖如春下梢,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背塞蹭。 一陣腳步聲響...
    開封第一講書人閱讀 33,135評(píng)論 1 272
  • 我被黑心中介騙來泰國(guó)打工孽江, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人番电。 一個(gè)月前我還...
    沈念sama閱讀 48,365評(píng)論 3 373
  • 正文 我出身青樓岗屏,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親漱办。 傳聞我的和親對(duì)象是個(gè)殘疾皇子这刷,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,055評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容

  • 最近做了一個(gè)投票的微信小程序,開發(fā)過程主要還是參考官方文檔:https://mp.weixin.qq.com/de...
    june5253閱讀 22,005評(píng)論 1 11
  • 昨天看了一下微信小程序官方文檔,總結(jié)一下自己學(xué)習(xí)的個(gè)人心得. 首先從官方文檔給的框架說起,微信小程序官方文檔給出了...
    Mr大大大閱讀 47,167評(píng)論 9 68
  • 上一章我們已經(jīng)介紹了微信小程序的目錄的整體了解以及app系列文件的講解,今天我們具體學(xué)習(xí)下Pages文件夾下的文件...
    Smile__EveryDay閱讀 41,289評(píng)論 0 6
  • 現(xiàn)在該怎么辦娩井,偷偷溜走暇屋?這樣會(huì)不會(huì)太失禮?還是叫醒他一起走洞辣?這樣會(huì)不會(huì)太尷尬咐刨?還是接著睡吧,等他醒來了再說扬霜,...
    俗底閱讀 174評(píng)論 0 1
  • 笨鳥先飛的故事大家都早已耳熟能詳定鸟,但是最近又聽到一個(gè)故事:笨鳥的兩種選擇。 講故事的是我的同學(xué)著瓶,她...
    人間清醒麥芽糖閱讀 681評(píng)論 0 1