微信小程序点击事件开发教程
小程序的开发步骤包括微信小程序点击事件的开发,但是关于点击事件,还有很多朋友表示不太清楚,今天小编就来为大家讲一讲微信小程序点击事件怎么开发。
微信⼩程序 事件什么是事件事件是视图层到逻辑层的通讯⽅式。事件可以将⽤户的⾏为反馈到逻辑层进⾏处理。事件可以绑定在组件上,当达到触发事件,就会执⾏逻辑层中对应的事件处理函数。事件对象可以携带额外信息,如id, dataset, touches。事件的使⽤⽅式
在组件中绑定⼀个事件处理函数。
如bindtap,当⽤户点击该组件的时候会在该页⾯对应的Page中找到相应的事件处理函数。
在相应的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,
}],
}
事件详解
事件分类
事件分为冒泡事件和⾮冒泡事件
1. 冒泡事件:当⼀个组件上的事件被触发后,该事件会向⽗节点传递。2. ⾮冒泡事件:当⼀个组件上的事件被触发后,该事件不会向⽗节点传递。WXML的冒泡事件列表:
类型
touchstart
touchmove
touchcancel
touchend
tap
longtap触发条件⼿指触摸动作开始⼿指触摸后移动⼿指触摸动作被打断,如来电提醒,弹窗⼿指触摸动作结束⼿指触摸后马上离开⼿指触摸后,超过350ms再离开
注:除上表之外的其他组件⾃定义事件都是⾮冒泡事件,如的submit事件,的input事件,的scroll事件,(详见各个)事件绑定
事件绑定的写法同组件的属*,以key、value的形式。
key以bind或catch开头,然后跟上事件的类型,如bindtap,catchtouchstartvalue是⼀个字符串,需要在对应的Page中定义同名的函数。不然当触发事件的时候会报错。
bind事件绑定不会阻⽌冒泡事件向上冒泡,catch事件绑定可以阻⽌冒泡事件向上冒泡。
如在下边这个例⼦中,点击inner view会先后触发handleTap3和handleTap2(因为tap事件会冒泡到middle view,⽽middle view阻⽌了tap事件冒泡,不再向⽗节点传递),点击middle view会触发handleTap2,点击outter view会触发handleTap1。
outer view
middle view
inner view
事件对象
如⽆特殊说明,当组件触发事件时,逻辑层绑定该事件的处理函数会收到⼀个事件对象。
BaseEvent基础事件对象属*列表:
类型
String
Integer
Object
Object属*说明事件类型事件⽣成时的时间戳触发事件的组件的⼀些属*值集合当前组件的⼀些属*值集合
CustomEvent ⾃定义事件对象属*列表(继承 BaseEvent):
属*类型说明Object额外的信息
TouchEvent 触摸事件对象属*列表(继承 BaseEvent):
属*类型说明Array触摸事件,当前停留在屏幕中的触摸点信息的数组Array触摸事件,当前变化的触摸点信息的数组
特殊事件: 中的触摸事件不可冒泡,所以没有 currentTarget。type
通⽤事件类型
timeStamp
该页⾯打开到触发事件所经过的毫秒数。
target
触发事件的源组件。
类型说明
idString事件源组件的id
tagNameString当前组件的类型Object事件源组件上由data-开头的⾃定义属*组成的集合属*currentTarget
事件绑定的当前组件。
类型说明
idString当前组件的id
tagNameString当前组件的类型Object当前组件上由data-开头的⾃定义属*组成的集合说明: target 和 currentTarget 可以参考上例中,点击 inner view时,handleTap3 收到的事件对象 target 和 currentTarget 都是 inner,⽽ handleTap2 收到的事件对象 target 就是 inner,currentTarget 就是 middle。属*
dataset
在组件中可以定义数据,这些数据将会通过事件传递给 SERVICE。书写⽅式:以data-开头,多个单词由连字符-链接,不能有⼤写(⼤写会⾃动转成⼩写)如data-element-type,最终在 event.target.dataset 中会将连字符转成驼峰elementType。⽰例:
Page({
bindViewTap:function(event){
event.target.dataset.alphaBeta === 1 // - 会转为驼峰写法 event.target.dataset.alphabeta === 2 // ⼤写会转为⼩写
}
})
touches
touches 是⼀个数组,每个元素为⼀个 Touch 对象(canvas 触摸事件中携带的 touches是 CanvasTouch 数组)。 表⽰当前停留在屏幕上的触摸点。
Touch 对象
属*
identifier
pageX,pageY
clientX,clientY类型说明Number触摸点的标识符 ,横向为X轴,Number距离⽂档左上⾓的距离,⽂档的左上⾓为原点纵向为Y轴XNumber距离页⾯可显⽰区域(屏幕除去导航条)左上⾓距离,横向为轴,纵向为Y轴
CanvasTouch 对象
属*类型说明特殊说明
identifierNumber触摸点的标识符 Canvas 左上⾓的距离,Canvas 的左上⾓为原点 ,横向 x, yNumber距离为X轴,纵向为Y轴
changedTouches
changedTouches 数据格式同 touches。 表⽰有变化的触摸点,如从⽆变有(touchstart),位置变化(touchmove),从有变⽆(touchend、touchcancel)。
detail
⾃定义事件所携带的数据,如表单组件的提交事件会携带⽤户的输⼊,媒体的错误事件会携带错误信息,详见定义中各个事件的定义。
微信小程序点击事件怎么开发?具体流程和相关代码小编都在文中介绍得比较详细了,希望能够帮助到大家。更多相关资料请关注微信小程序素材网。
微信小程序点击事件是什么?怎么操作?
微信小程序点击事件处理与参数传递
微信小程序按钮点击事件,微信小程序按钮组件:button