微信小程式開發系列五:微信小程式中如何響應使用者輸入事件
微信小程式開發系列教程
微信小程式開發系列五:微信小程式中如何響應使用者輸入事件
透過前面四個章節的介紹,大家對微信小程式的檢視和控制器,以及微信偵錯程式的用法已經有了一個最基本的認識了。在這個基礎上,讓我們進一步學習微信小程式控制器,掌握在小程式控制器中響應使用者輸入的方法。
這個例子很簡單,在微信小程式的檢視index.wxml裡,我定義了一個按鈕,和一個文字元素。
<button bindtap="jerry_increase"> 點我加1 </button>
<text class="user-motto">{{counter}}</text>
文字元素繫結到小程式資料模型的counter欄位上,是一個計數器。按鈕繫結了一個事件處理函式jerry_increase。每點選一次按鈕,微信小程式UI上的計數器加一。
為此,首先需要在控制器index.js的data資料模型裡增添一個counter欄位。
然後實現button的bindtap繫結的函式jerry_increase。可以看到這個事件處理函式有一個輸入引數e:
當事件處理函式被呼叫時,這個輸入引數e是微信框架自動傳入到事件處理函式的。透過微信開發者工具的偵錯程式可以看到這個引數e的明細:tap事件發生的X和Y座標,以及事件型別tap。
我們如果從當前控制器事件處理函式執行棧向外觀察,發現它的前一層,即微信框架層的處理邏輯裡,在呼叫事件處理函式前後分別取兩個當前的時間戳。如果時間戳之差大於1000毫秒,會執行第30365行的Reporter.slowReport。由此我們看出,微信希望開發者實現的事件處理函式要儘可能高效,執行時間不能超過1秒。在手機使用場景裡,1秒的等待時間對於終端使用者來說是一個相當長的時間了。
另一個值得一提的知識點是,如果直接用JavaScript修改資料模型的值,則UI不會有任何變化。
下面是錯誤的做法:
jerry_increase: function(e){ this.data.counter = this.data.counter + 1; },
下面是正確的做法:
jerry_increase: function(e){ this.setData({ counter: this.data.counter + 1}); },
我們可以透過單步除錯正確的做法來理會其中的奧妙:
可以看到this.setData裡面會呼叫微信框架的c.default.emit函式,把最新的資料透過emit函式投遞出去。
繼續檢視emit的實現,可以發現emit又呼叫了微信工具類wx的方法:invokeWebviewMethod。從WAService.js的內部實現,我們能發現其實微信小程式在手機上的執行實際是執行在WebView裡的。
一旦WeixinJSBridge.publish.apply(WeixinJSBridge, e)這一行程式碼執行完畢,UI上的計數器才被重新整理。
本文介紹瞭如果在微信小程式裡編寫JavaScript來響應button的點選事件。
本系列的下一篇文章會介紹微信小程式的button元件提供的一些微信原生功能,比如獲取當前使用者資訊等強大功能的用法。
要獲取更多Jerry的原創技術文章,請關注公眾號"汪子熙"或者掃描下面二維碼:
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/24475491/viewspace-2213821/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 微信小程式開發系列二:微信小程式的檢視設計微信小程式
- 微信小程式開發系列教程三:微信小程式的除錯方法微信小程式除錯
- 微信小程式開發系列七:微信小程式的頁面跳轉微信小程式
- 微信小程式如何在事件中傳參微信小程式事件
- 微信小程式開發風口下,微信小程式該如何運營?微信小程式
- 微信小程式開發微信小程式
- 微信小程式開發小記微信小程式
- 微信小程式開發系列六:微信框架API的呼叫微信小程式框架API
- 微信小程式開發–視訊教程系列微信小程式
- 【小程式】微信小程式開發實踐微信小程式
- 【小程式】微信小程式開發準備微信小程式
- 微信小程式雲開發如何上手微信小程式
- 微信小程式開發系列 (四) :微信小程式的頁面跳轉路由設計微信小程式路由
- 微信小程式如何響應使用者點選事件和微信平臺 API 的使用方法介紹微信小程式事件API
- 微信小程式開發常見問題(五)微信小程式
- 微信小程式開發系列8----頁面配置--事件繫結微信小程式事件
- 微信小程式教程系列微信小程式
- 微信小程式開發教程微信小程式
- 微信小程式開發2微信小程式
- 微信開發與小程式
- 快速開發微信小程式微信小程式
- 微信小程式怎麼開通,小程式頁面如何開發微信小程式
- 【微信小程式】小程式內如何匯入vantUI元件微信小程式UI元件
- 微信小程式開發系列(一) :開發環境搭建和微信小程式的檢視設計與開發微信小程式開發環境
- 微信小程式事件繫結微信小程式事件
- 微信小程式-檢視事件微信小程式事件
- 微信小程式自定義事件微信小程式事件
- 微信小程式開發系列四:微信小程式之控制器的初始化邏輯微信小程式
- 微信小程式登入微信小程式
- 微信小程式--聊天室小程式(雲開發)微信小程式
- 微信小程式之-NBA線上直播小程式開發微信小程式
- 微信小程式開發入門與實踐微信小程式
- 微信小程式開發總結微信小程式
- 開發微信小程式的作用微信小程式
- 微信小程式藍芽開發微信小程式藍芽
- 微信小程式雲開發6微信小程式
- 微信小程式開發神器-Grace微信小程式
- 微信小程式開發--『狗蛋TV』微信小程式