您的位置:首页 > 移动开发 > 微信开发

微信小程序入门四:视图层事件

2017-01-20 22:49 288 查看

一、事件机制

在微信官方定义的事件概念如下:

什么是事件

事件是视图层到逻辑层的通讯方式。

事件可以将用户的行为反馈到逻辑层进行处理。

事件可以绑定在组件上,当达到触发事件,就会执行逻辑层中对应的事件处理函数。

事件对象可以携带额外信息,如 id, dataset, touches。

1.1 事件绑定

在wxml的标签中进行事件绑定主要有两种方式:bind+事件名 或者 touch+事件名

1)、bind

bind+事件名可以绑定一个事件处理函数,函数传入参数即为事件对象

示例

<view id="tapTest" data-say="hello" bindtap="showMe"> 点击输出 </view>


如上,通过bindtap,绑定一个触摸点击事件,tap为小程序封装的一个事件名

在Page函数的参数中,定义对应的事件响应函数

id,dataset,touches是事件对象携带的信息

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


这里的事件对象是小程序包装过的对象,其中常用的是currentTarget属性,输出如下:

"currentTarget":  {
"id": "tapTest",
"dataset": {
"hi":"hello"
}
},
"touches":[{
"identifier":0,
"pageX":53,
"pageY":14,
"clientX":53,
"clientY":14
}],


说明:

dataset中存放了在标签中通过data-自定的属性值 key即为data-中*定义的内容,value即为对应的值

touches:中存放了事件触发的具体信息

1.2 catch

catch+事件名 :是绑定事件的另一种方法

<view id="target1" catchTap="handleTap1">触摸事件</view>


Page({
handleTap1:function(e){
console.log(e)
}
})


1.3 catch和bind的区别

二者都用于绑定事件,但bind不能阻止事件冒泡,而catch方法可以阻止事件冒泡

冒泡事件:当一个组件上的事件被触发后,该事件会向父节点传递。

非冒泡事件:当一个组件上的事件被触发后,该事件不会向父节点传递。

冒泡事件:touchstart,touchmove,touchcancel,touchend,tap,longtap

1.4 事件对象

Page({
handleTap1:function(e){
console.log(e)
}
})


如上:打印出的事件对象具有多个属性

type:事件类型,timeStamp:事件时间戳,target:事件源 currentTarget:事件绑定的组件
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: