微信小程序开发教程(7)- 小程序中的事件绑定
深山老妖浏览:2242024-11-19 17:28:09本文累计收益:0我也要赚钱
一、什么是事件绑定

事件是渲染层到逻辑层的通讯方式。通过事件可以将用户在渲染层产生的行为,反馈到逻辑层进行业务的处理。

二、小程序中常用的事件

1、对象属性简介

当事件回调触发的时候,会收到一个事件对象的event,事件对象详细属性如下所示:

target和currentTarget的区别,target是触发该事件的源头组件,而currentTarget则是当前事件所绑定的组件,例如:

<view bind:tap="showMsg">
  <button>测试按钮</button>
</view>

点击内容按钮时,点击事件会以冒泡的方式向外扩散,也会触发外层view的tab事件处理函数。此时,对于外层的view来说,e.target指向的是触发事件的源头组件,因此,e.target是内部的按钮组件。e.currentTarget指向的是当前正在触发事件的那个组件,因此,e.currentTarget是当前的view组件。

2、bindtap语法格式

在小程序中,不存在Html中的onclick鼠标点击事件,而是通过tap事件来响应用户的触摸行为。通过bindtap,可以为组件绑定tap触摸事件,语法如下:

<button bind:tap="showMsg">测试按钮</button>
Page({
  showMsg(event) {
    console.log(event)
  }
})
3、事件处理函数中为data中的数据赋值

通过调用this.setData(dataObject)方法,可以给页面data中的数据重新赋值,代码如下:

Page({
  data:{
    count:0,
  },
  btnTapHandler(e) {
    console.log(e)
    this.setData({
      count:this.data.count + 1,
    })
  }
})
4、事件传参

小程序中的事件传参比较特殊,不能在绑定事件的同时为事件处理函数传递参数,如下面代码将不能被正常执行

因为程序会把bindtap的属性值,统一当做事件名称来处理,相当于要调用一个名称为btnHandler(123)的处理函数。

可以为组件提供data-*自定义属性传参,其中*代表的是参数的名字,代码如下:

<button bindtap="btnHandler" data-info="{{2}}">事件参数</button>

代码中info会被解析为参数的名字,数值2会被解析为参数的值。

在事件处理函数中可以通过event.target.dataset.参数名即可获取到具体参数的值,代码如下:

btnHandler(event){
    console.log(event.target.dataset.info)
}
5、bindinput语法格式

在小程序中,通过input事件来响应文本框的输入事件,语法格式如下:

<input bindinput="inputHandler"/>
  inputHandler(e){
    console.log(e.detail.value)
  }

 

评论列表
发表评论
+ 关注