日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

微信小程序开发系列五:微信小程序中如何响应用户输入事件

發布時間:2023/12/19 编程问答 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 微信小程序开发系列五:微信小程序中如何响应用户输入事件 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

微信小程序開發系列教程

微信小程序開發系列一:微信小程序的申請和開發環境的搭建

微信小程序開發系列二:微信小程序的視圖設計

微信小程序開發系列三:微信小程序的調試方法

微信小程序開發系列四:微信小程序之控制器的初始化邏輯

通過前面四個章節的介紹,大家對微信小程序的視圖和控制器,以及微信調試器的用法已經有了一個最基本的認識了。在這個基礎上,讓我們進一步學習微信小程序控制器,掌握在小程序控制器中響應用戶輸入的方法。

這個例子很簡單,在微信小程序的視圖index.wxml里,我定義了一個按鈕,和一個文本元素。

點我加1

{{counter}}

文本元素綁定到小程序數據模型的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的原創技術文章,請關注公眾號"汪子熙"或者掃描下面二維碼:

總結

以上是生活随笔為你收集整理的微信小程序开发系列五:微信小程序中如何响应用户输入事件的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。