`
JerryWang_SAP
  • 浏览: 1063199 次
  • 性别: Icon_minigender_1
  • 来自: 成都
文章分类
社区版块
存档分类
最新评论

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

阅读更多

微信小程序开发系列教程

微信小程序开发系列一:微信小程序的申请和开发环境的搭建

微信小程序开发系列二:微信小程序的视图设计

微信小程序开发系列三:微信小程序的调试方法

微信小程序开发系列四:微信小程序之控制器的初始化逻辑

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

通过前面四个章节的介绍,大家对微信小程序的视图和控制器,以及微信调试器的用法已经有了一个最基本的认识了。在这个基础上,让我们进一步学习微信小程序控制器,掌握在小程序控制器中响应用户输入的方法。

这个例子很简单,在微信小程序的视图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的原创技术文章,请关注公众号"汪子熙"或者扫描下面二维码:

 

 
 
0
0
分享到:
评论

相关推荐

    微信小程序 康爱多微商城:学习界面设计 (源码)

    微信小程序 康爱多微商城:学习界面设计 (源码)微信小程序 康爱多微商城:学习界面设计 (源码)微信小程序 康爱多微商城:学习界面设计 (源码)微信小程序 康爱多微商城:学习界面设计 (源码)微信小程序 康爱多微商城...

    微信小程序学习用demo:2048小游戏(源代码+截图)

    微信小程序学习用demo:2048小游戏(源代码+截图)微信小程序学习用demo:2048小游戏(源代码+截图)微信小程序学习用demo:2048小游戏(源代码+截图)微信小程序学习用demo:2048小游戏(源代码+截图)微信小程序学习用demo...

    微信小程序 同乐居商城:购物车合算 (源码)

    微信小程序 同乐居商城:购物车合算 (源码)微信小程序 同乐居商城:购物车合算 (源码)微信小程序 同乐居商城:购物车合算 (源码)微信小程序 同乐居商城:购物车合算 (源码)微信小程序 同乐居商城:购物车合算 (源码)...

    微信小程序demo:Railay:整体框架(源代码+截图)

    微信小程序demo:Railay:整体框架(源代码+截图)微信小程序demo:Railay:整体框架(源代码+截图)微信小程序demo:Railay:整体框架(源代码+截图)微信小程序demo:Railay:整体框架(源代码+截图)微信小程序demo:...

    微信小程序学习demo推荐:卡卡汽车:获取用户,设备信息(源代码+截图)

    微信小程序学习demo推荐:卡卡汽车:获取用户,设备信息(源代码+截图)微信小程序学习demo推荐:卡卡汽车:获取用户,设备信息(源代码+截图)微信小程序学习demo推荐:卡卡汽车:获取用户,设备信息(源代码+截图)微信...

    微信小程序源码-画布:时钟.zip

    微信小程序源码-画布:时钟.zip微信小程序源码-画布:时钟.zip微信小程序源码-画布:时钟.zip微信小程序源码-画布:时钟.zip微信小程序源码-画布:时钟.zip微信小程序源码-画布:时钟.zip微信小程序源码-画布:时钟....

    【微信小程序-毕设期末大作业】微信小程序源码麻将骰子:附详细教程.zip

    【微信小程序-毕设期末大作业】微信小程序源码 【微信小程序-毕设期末大作业】微信小程序源码 【微信小程序-毕设期末大作业】微信小程序源码 【微信小程序-毕设期末大作业】微信小程序源码 【微信小程序-毕设期末大...

    微信小程序源码-外卖:实现类似锚点功能.zip

    微信小程序源码-外卖:实现类似锚点功能.zip微信小程序源码-外卖:实现类似锚点功能.zip微信小程序源码-外卖:实现类似锚点功能.zip微信小程序源码-外卖:实现类似锚点功能.zip微信小程序源码-外卖:实现类似锚点...

    微信小程序制作案例分享:一个旅游攻略平台

    微信小程序微信小程序制作案例分享:一个旅游攻略平台微信小程序制作案例分享:一个旅游攻略平台微信小程序制作案例分享:一个旅游攻略平台微信小程序制作案例分享:一个旅游攻略平台微信小程序制作案例分享:一个...

    微信小程序推荐学习demo:字体,选择,输入,列表(源代码+截图)

    微信小程序推荐学习demo:字体,选择,输入,列表(源代码+截图)微信小程序推荐学习demo:字体,选择,输入,列表(源代码+截图)微信小程序推荐学习demo:字体,选择,输入,列表(源代码+截图)微信小程序推荐学习demo...

    微信小程序demo:豆瓣电影:使用API(源代码+截图)

    微信小程序demo:豆瓣电影:使用API(源代码+截图)微信小程序demo:豆瓣电影:使用API(源代码+截图)微信小程序demo:豆瓣电影:使用API(源代码+截图)微信小程序demo:豆瓣电影:使用API(源代码+截图)微信小程序demo:...

    微信小程序完整demo:Todo(源代码+截图)

    微信小程序完整demo:Todo(源代码+截图)微信小程序完整demo:Todo(源代码+截图)微信小程序完整demo:Todo(源代码+截图)微信小程序完整demo:Todo(源代码+截图)微信小程序完整demo:Todo(源代码+截图)微信小程序完整...

    微信小程序学习demo:表单练习(源代码+截图)

    微信小程序学习demo:表单练习(源代码+截图)微信小程序学习demo:表单练习(源代码+截图)微信小程序学习demo:表单练习(源代码+截图)微信小程序学习demo:表单练习(源代码+截图)微信小程序学习demo:表单练习(源代码+...

    微信小程序开发图解案例教程-源代码

    微信小程序开发图解案例教程-源代码微信小程序开发图解案例教程-源代码微信小程序开发图解案例教程-源代码微信小程序开发图解案例教程-源代码微信小程序开发图解案例教程-源代码微信小程序开发图解案例教程-源代码...

    微信小程序开发入门教程&深入浅出,从理论到实践.pdf

    微信小程序开发入门教程&深入浅出,从理论到实践 微信小程序开发入门教程&深入浅出,从理论到实践 微信小程序开发入门教程&深入浅出,从理论到实践 微信小程序开发入门教程&深入浅出,从理论到实践 微信小程序开发...

    微信小程序源码 题库:选择选项,切换至下一题(学习版)

    微信小程序源码 题库:选择选项,切换至下一题(学习版)微信小程序源码 题库:选择选项,切换至下一题(学习版)微信小程序源码 题库:选择选项,切换至下一题(学习版)微信小程序源码 题库:选择选项,切换至下一题...

    微信小程序demo:花店(源代码+截图)

    微信小程序demo:花店(源代码+截图)微信小程序demo:花店(源代码+截图)微信小程序demo:花店(源代码+截图)微信小程序demo:花店(源代码+截图)微信小程序demo:花店(源代码+截图)微信小程序demo:花店(源代码+截图)...

    微信小程序地图功能开发:绘制多边形和标记点

    本资源是一个专为微信小程序设计的地图组件,它允许开发者在地图上绘制多边形区域和添加标记点。...通过这个资源,开发者可以快速集成地图功能到自己的微信小程序中,为用户提供丰富、直观的地理位置信息展示。

    微信小程序一键解密工具(PC微信小程序一键解密 By:代码果)

    使用说明:选择小程序包进行解密,自动判断是否需要解密,解密后放在wxpack文件夹,请勿删除该文件夹。

    微信小程序demo:商城(源代码+截图)

    微信小程序demo:商城(源代码+截图)微信小程序demo:商城(源代码+截图)微信小程序demo:商城(源代码+截图)微信小程序demo:商城(源代码+截图)微信小程序demo:商城(源代码+截图)微信小程序demo:商城(源代码+截图)...

Global site tag (gtag.js) - Google Analytics