当前位置:AIGC资讯 > AIGC > 正文

【愚公系列】《微信小程序开发解析》005-事件

? 作者简介,愚公搬代码
?《头衔》:华为云特约编辑,华为云云享专家,华为开发者专家,华为产品云测专家,CSDN博客专家,CSDN商业化专家,阿里云专家博主,阿里云签约作者,腾讯云优秀博主,腾讯云内容共创官,掘金优秀博主,亚马逊技领云博主,51CTO博客专家等。
?《近期荣誉》:2022年度博客之星TOP2,2023年度博客之星TOP2,2022年华为云十佳博主,2023年华为云十佳博主等。
?《博客内容》:.NET、Java、Python、Go、Node、前端、IOS、Android、鸿蒙、Linux、物联网、网络安全、大数据、人工智能、U3D游戏、小程序等相关领域知识。
??欢迎 ?点赞✍评论⭐收藏

文章目录

?前言 ?一、事件 ?1.简单事件 ?1.1 点击事件(Tap Event) ?1.2 输入事件(Input Event) ?1.3 表单提交事件(Submit Event) ?1.4 切换事件(Change Event) ?1.5 滑动事件(Scroll Event) ?2.事件参数 ?3.事件传参 ?3.1 通过 `data-` 属性传参 ?3.2 通过 `event.detail` 传参 ?3.3 使用 `bind` 传递参数 ?3.4 在事件对象中传递自定义数据 ?4.事件绑定 ?4.1 WXML 文件 ?4.2 JS 文件 ?4.3 动态绑定条件 ?4.4 WXML 文件中的条件绑定 ?5.事件冒泡 ?5.1 事件冒泡的具体过程 ?5.2 阻止事件冒泡 ?5.3 事件绑定类型 ?6.互斥事件 ?6.1 使用锁机制 ?6.2 异步队列 ?6.3 控制事件触发频率 ?6.4 使用标志位 ?6.5 mut-bind ?6.事件的捕获阶段 ?7.事件对象 ?感谢:给读者的一封信

?前言

在微信小程序中,事件是用户和程序之间交互的核心概念。通过事件,用户可以与小程序进行各种交互操作,例如点击按钮、输入文字、滑动屏幕等。以下是微信小程序中事件的概念和使用方法。

事件类型

触摸事件:包括触摸开始、触摸移动、触摸结束等,如 touchstarttouchmovetouchend 等。 鼠标事件:主要用于 PC 端小程序,如 clickdblclick 等。 表单事件:与表单控件相关的事件,如 submitinputfocusblur 等。 媒体事件:与音视频控件相关的事件,如 playpauseended 等。 页面事件:与页面生命周期相关的事件,如 onLoadonReadyonShowonHideonUnload 等。

事件绑定

在 WXML 中,通过 bindcatch 关键字来绑定事件处理函数。例如:

bindtap:绑定点击事件。 bindinput:绑定输入事件。

?一、事件

?1.简单事件

在微信小程序(WeChat Mini Programs)中,事件处理是实现用户交互的核心部分。

?1.1 点击事件(Tap Event)

点击事件是最常见的事件之一,可以用于按钮点击、图片点击等。

示例代码:

<!-- WXML -->
<view bindtap="handleTap">点击我</view>
// JS
Page({
   
  handleTap: function() {
   
    wx.showToast({
   
      title: '你点击了我!',
      icon: 'none'
    });
  }
})

?1.2 输入事件(Input Event)

输入事件用于处理用户在输入框中的输入操作。

示例代码:

<!-- WXML -->
<input bindinput="handleInput" placeholder="请输入内容"/>
// JS
Page({
   
  data: {
   
    inputValue: ''
  },
  handleInput: function(event) {
   
    this.setData({
   
      inputValue: event.detail.value
    });
  }
})

?1.3 表单提交事件(Submit Event)

表单提交事件用于处理用户提交表单时的操作。

示例代码:

<!-- WXML -->
<form bindsubmit="handleSubmit">
  <input name="username" placeholder="用户名"/>
  <button formType="submit">提交</button>
</form>
// JS
Page({
   
  handleSubmit: function(event) {
   
    const formData = event.detail.value;
    wx.showModal({
   
      title: '表单数据',
      content: `用户名: ${
     formData.username}`,
      showCancel: false
    });
  }
})

?1.4 切换事件(Change Event)

切换事件通常用于处理滑块或开关等组件的状态变化。

示例代码:

<!-- WXML -->
<switch bindchange="handleSwitchChange"/>
// JS
Page({
   
  handleSwitchChange: function(event) {
   
    wx.showToast({
   
      title: event.detail.value ? '开关已打开' : '开关已关闭',
      icon: 'none'
    });
  }
})

?1.5 滑动事件(Scroll Event)

滑动事件用于处理页面或某个区域的滚动操作。

示例代码:

<!-- WXML -->
<scroll-view bindscroll="handleScroll"   scroll-y>
  <!-- 内容 -->
</scroll-view>
// JS
Page({
   
  handleScroll: function(event) {
   
    console.log('滚动位置:', event.detail.scrollTop);
  }
})

?2.事件参数

在微信小程序中,事件参数是在事件触发时传递给事件处理函数的信息。这些参数通常包含关于事件的详细信息,例如事件类型、触发事件的元素、触摸点信息等。

以下是一些常见的事件参数:

event: 主要的事件对象,包含以下属性和方法。

type: 事件类型,例如 taptouchstarttouchmovetouchend 等。 timeStamp: 事件生成时的时间戳。 target: 触发事件的组件的相关信息,包含以下属性: id: 触发事件的组件的ID。 dataset: 触发事件的组件上绑定的 data- 属性集合(例如 data-foo="bar")。 currentTarget: 当前处理事件的组件的相关信息,结构同 targetdetail: 事件的详细信息,不同类型的事件会有不同的 detail 数据。例如: 对于 tap 事件,detail 包含 xy 属性,表示触摸点相对于目标元素的坐标。 对于 input 事件ÿ

总结

### 文章总结
本文作者是愚公搬代码,一位在多家云平台和技术社区拥有多重专家身份的资深技术博主。文章围绕微信小程序中的事件处理进行详细介绍,内容涵盖了事件的基本概念、类型、参数、传参方式、绑定方法、事件冒泡、互斥事件处理以及事件对象等方面。
**前言**部分概述了微信小程序中事件的重要性及其与用户交互的核心概念,列举了触摸事件、鼠标事件、表单事件、媒体事件和页面事件等多种事件类型。
**一、事件**部分详细讨论了以下几点:
1. **简单事件**:
- **点击事件(Tap Event)**:示例展示了如何在WXML中绑定点击事件处理程序,并在JS中处理点击事件。
- **输入事件(Input Event)**:介绍了如何处理用户在文本框中的输入操作,示例展示了如何实时显示用户输入的文本。
- **表单提交事件(Submit Event)**:说明了如何通过表单提交事件获取用户填写的数据,并在JS中处理这些数据。
- **切换事件(Change Event)**:以`switch`组件为例,展示了如何处理滑块或开关的状态变化。
- **滑动事件(Scroll Event)**:介绍了如何通过滑动事件处理页面或区域的滚动操作,以及如何获取滚动位置信息。
2. **事件参数**:详细解释了事件触发时传递给事件处理函数的信息(即事件参数),包括事件类型、时间戳、触发事件的组件信息以及事件的详细信息等。
3. **事件传参**:提供了四种通过事件传递参数的方法:
- **通过`data-`属性传参**
- **通过`event.detail`传参**
- **使用`bind`传递参数**
- **在事件对象中传递自定义数据**
4. **事件绑定**:讲解了如何在WXML文件和JS文件中绑定和处理事件,还介绍了动态绑定条件及其在WXML中的应用。
5. **事件冒泡**:解释了事件冒泡的具体过程,提供了如何阻止事件冒泡的方法,并说明了不同类型的事件绑定方式。
6. **互斥事件**:针对需要处理互斥事件的情况,介绍了使用锁机制、异步队列、控制触发频率、使用标志位以及`mut-bind`(此处似为笔误或特定框架特性,非微信小程序原生)等几种方法。
7. **事件的捕获阶段**(虽标题提及但内容未详细展开):可能指事件传播过程中先捕获后冒泡的阶段,文中未提供具体实现。
8. **事件对象**:简要提及了事件处理函数接收的主要对象`event`,其包含大量与事件相关的信息和属性。
**结尾**部分以感谢读者的一封信作为结束,虽无具体内容但体现了作者的谦逊与对读者的尊重。
总的来说,本文全面而深入地介绍了微信小程序中的事件处理机制,对于初学者和希望深入了解小程序开发的开发者来说是一份非常有价值的参考资料。

更新时间 2024-08-14