• 微信小程序事件绑定


    一 什么是事件

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

    二 小程序中常用事件

    三 事件对象的属性列表

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

    四 target 和 currentTarget 的区别

    target 是触发该事件的源头组件,而 currentTarget 则是当前事件所绑定的组件。

    点击内部的按钮时,点击事件以冒泡的方式向外扩散,也会触发外层 view 的 tap 事件处理函数。

    此时,对于外层的 view 来说:

    e.target 指向的是触发事件的源头组件,因此,e.target 是内部的按钮组件。

    e.currentTarget 指向的是当前正在触发事件的那个组件,因此,e.currentTarget 是当前的 view 组件。

    五 bindtap 的语法格式

    在小程序中,不存在 HTML 中的 onclick 鼠标点击事件,而是通过 tap 事件来响应用户的触摸行为。

    1 通过 bindtap,可以为组件绑定 tap 触摸事件,语法如下。

    2 在页面的 .js 文件中定义对应的事件处理函数,事件参数通过形参 event(一般简写成 e) 来接收。

    1. Page({
    2. // 定义按钮的事件处理函数
    3. btnTapHandler(e) {
    4. console.log(e)
    5. }
    6. })

    六 在事件处理函数中为 data 中的数据赋值

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

    1. Page({
    2. /**
    3. * 页面的初始数据
    4. */
    5. data: {
    6. count: 0
    7. },
    8. // +1 按钮的点击事件处理函数
    9. CountChange() {
    10. this.setData({
    11. count: this.data.count + 1
    12. })
    13. },
    14. })

    七 错误的事件传参

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

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

    八 正确的事件传参

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

    最终:

    • info 会被解析为参数的名字

    • 数值 2 会被解析为参数的值

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

    1. btnTap2(e) {
    2. this.setData({
    3. // dataset 是一个对象,包含了所有通过 data-* 传递过来的参数项,通过 dataset 可以访问到具体参数的值
    4. count: this.data.count + e.target.dataset.info
    5. })
    6. }

  • 相关阅读:
    Hadoop的UI页面介绍
    2022年PMP考试换大纲了,但是PMBOK还没更新,该如何准备?
    [C/C++]数据结构 LeetCode:用栈实现队列
    毕业搬砖后,依然躲不过考试,分享30道过华为机考的LeetCode高效刷题经验
    C++ 17 filesystem
    SparkCore系列-8、RDD 读写外部数据源
    【Qt】Qt获取标准系统路径
    机器人任务挖掘与智能超级自动化技术解析
    AWS DynamoDB浅析
    数据库嵌套事务的实现
  • 原文地址:https://blog.csdn.net/chengqiuming/article/details/126763187