微信小程序(事件处理)
2017-02-22 17:48
162 查看
1.什么是事件:
事件是视图层到逻辑层的通讯方式。
事件可以将用户的行为反馈到逻辑层进行处理。
事件可以绑定在组件上,当达到触发事件,就会执行逻辑层中对应的事件处理函数。
事件对象可以携带额外信息,如 id, dataset, touches。
2.事件的使用方式:
在组件中绑定一个事件处理函数。
如bindtap,当用户点击该组件的时候会在该页面对应的Page中找到相应的事件处理函数。
注意:在有些时候,会出现点击一次tapName事件,会出现两次或者多次,这个时候的解决办法是完全关闭微信web开发者工具之后再重新启动就好了。
在相应的Page定义中写上相应的事件处理函数,参数是event。
可以看到log出来的信息大致如下:
3.事件分类
事件分为冒泡事件和非冒泡事件:
1.冒泡事件:当一个组件上的事件被触发后,该事件会向父节点传递。
2.非冒泡事件:当一个组件上的事件被触发后,该事件不会向父节点传递。
4.事件绑定
事件绑定的写法同组件的属性,以 key、value 的形式。
key 以 bind 或 catch 开头,然后跟上事件的类型,如 bindtap , catchtouchstart
value 是一个字符串,需要在对应的 Page 中定义同名的函数。不然当触发事件的时候会报错。
bind 事件绑定不会阻止冒泡事件向上冒泡, catch 事件绑定可以阻止冒泡事件向上冒泡。
如在下边这个例子中,点击 inner view 会先后触发 handleTap3 和 handleTap2 (因为tap事件会冒泡到 middle view,而 middle view 阻止了 tap 事件冒泡,不再向父节点传递),点击 middle view 会触发 handleTap2 ,点击 outter view 会触发 handleTap1 。
事件是视图层到逻辑层的通讯方式。
事件可以将用户的行为反馈到逻辑层进行处理。
事件可以绑定在组件上,当达到触发事件,就会执行逻辑层中对应的事件处理函数。
事件对象可以携带额外信息,如 id, dataset, touches。
2.事件的使用方式:
在组件中绑定一个事件处理函数。
如bindtap,当用户点击该组件的时候会在该页面对应的Page中找到相应的事件处理函数。
<view id="tapTest" data-hi="WeChat" bindtap="tapName"> Click me! </view>
注意:在有些时候,会出现点击一次tapName事件,会出现两次或者多次,这个时候的解决办法是完全关闭微信web开发者工具之后再重新启动就好了。
在相应的Page定义中写上相应的事件处理函数,参数是event。
Page({ tapName: function(event) { console.log(event) } })
可以看到log出来的信息大致如下:
{ "type":"tap", "timeStamp":895, "target": { "id": "tapTest", "dataset": { "hi":"WeChat" } }, "currentTarget": { "id": "tapTest", "dataset": { "hi":"WeChat" } }, "detail": { "x":53, "y":14 }, "touches":[{ "identifier":0, "pageX":53, "pageY":14, "clientX":53, "clientY":14 }], "changedTouches":[{ "identifier":0, "pageX":53, "pageY":14, "clientX":53, "clientY":14 }] }
3.事件分类
事件分为冒泡事件和非冒泡事件:
1.冒泡事件:当一个组件上的事件被触发后,该事件会向父节点传递。
2.非冒泡事件:当一个组件上的事件被触发后,该事件不会向父节点传递。
4.事件绑定
事件绑定的写法同组件的属性,以 key、value 的形式。
key 以 bind 或 catch 开头,然后跟上事件的类型,如 bindtap , catchtouchstart
value 是一个字符串,需要在对应的 Page 中定义同名的函数。不然当触发事件的时候会报错。
bind 事件绑定不会阻止冒泡事件向上冒泡, catch 事件绑定可以阻止冒泡事件向上冒泡。
如在下边这个例子中,点击 inner view 会先后触发 handleTap3 和 handleTap2 (因为tap事件会冒泡到 middle view,而 middle view 阻止了 tap 事件冒泡,不再向父节点传递),点击 middle view 会触发 handleTap2 ,点击 outter view 会触发 handleTap1 。
<view id="outter" bindtap="handleTap1"> outer view <view id="middle" catchtap="handleTap2"> middle view <view id="inner" bindtap="handleTap3"> inner view </view> </view> </view>
相关文章推荐
- 微信小程序事件处理
- 微信小程序-参数传递与事件处理
- 微信小程序-传递多个参数与事件处理
- 微信小程序实例:image组件的binderror事件处理
- 微信小程序 动态绑定数据及动态事件处理
- 微信小程序目录结构、事件处理、网络请求
- 微信小程序开发之checkbox以及js数据配置和事件处理
- EA&UML日拱一卒-0基础学习微信小程序(8)-事件处理和数据绑定
- .net中多控件共享事件处理程序的方法
- Henry的VB.NET之旅(十四)—动态关联事件与处理程序
- 在C# WinForm程序中创建控件数组及相应的事件处理
- Henry的VB.NET之旅(十三)—标准事件处理程序
- C#中动态创建控件及事件处理程序
- C#事件演示程序2)——写事件的三点注意,以及常用的事件处理模型
- 使用 Visual Basic .NET 重载事件处理程序(微软)
- 打字练习程序 -- Java线程/事件处理的好资料
- Gtk对于通常的gui程序,大家想做的事就是做一点事件处理(包括各种计算、文件操作等),然后在界面上显示出来
- Henry的VB.NET之旅(十三)—标准事件处理程序
- C#事件演示程序1)——一个最简单的C#事件处理程序
- C#中动态创建控件及事件处理程序