微信小程序 | 小程序的事件处理

news2025/2/1 8:46:31

🖥️ 微信小程序 专栏:小程序的事件处理
🧑‍💼 个人简介:一个不甘平庸的平凡人🍬

✨ 个人主页:CoderHing的个人主页

🍀 格言: ☀️ 路漫漫其修远兮,吾将上下而求索☀️

👉 你的一键三连是我更新的最大动力❤️


目录

一、小程序的事件监听

事件的监听

二、常见事件类型划分

组件的特殊事件

三、事件对象属性分析

事件对象event

currentTarget和target的区别

touches和changedTouches的区别(比较少用到)

四、事件参数传递方法

事件参数的传递

五、事件传递案例练习

六、逻辑传递数据另外一种方式:Mark


一、小程序的事件监听

事件的监听

  • 什么时候会产生事件?
  • 小程序需要经常和 用户进行交互,如点击某个按钮,滑动某个区域;
  • 事件是 视图层到逻辑层的通讯方式
  • 可以将用户的行为反馈到逻辑层 进行处理
  • 事件 可以绑定在组件上,当触发事件时,就会执行逻辑层中对应的事件处理函数
  • 事件对象可以携带额外信息,如: id,dataset,touches

  • 事件如何处理?
  • 通过 bind/catch这个属性 绑定在组件上的(和普通的属性写法相似 以key="value"形式)
  • Key 以 bind或catch开头,从1.5.0版本开始, 可以在bind和catch后加上一个冒号
  • 同时在当前页面的Page构造器中 定义对应的事件处理函数,若没有对应的函数,触发会报错
  • 如 当用户点击 button按钮时,达到触发条件生成事件Tap,该事件处理函数会被执行,同时会受到一个事件对象event

二、常见事件类型划分

组件的特殊事件

  • 某些组件会有自己特性的事件类型
  • 如input有bindinput/bindblur/bindfocus
  • 如scroll-view有bindscrolltowpper/bindscrolltolower

三、事件对象属性分析

事件对象event

  • 当某个事件触发时, 会产生一个事件对象, 这个对象被传入到回调函数中, 事件对象有哪些常见的属性呢?

currentTarget和target的区别

 

JavaScript
js文件代码展示
  onOuterViewTap(event){
    console.log("onOuterViewTap:",event);
    // 1.target表示 => 触发事件的元素
    // 2.currentTarget => 处理事件的元素
    // {type: "tap", timeStamp: 841947, target: {…}, currentTarget: {…}, mark: {…}, …}
    console.log(event.target); // {id: "", offsetLeft: 0, offsetTop: 40, dataset: {…}}
    console.log(event.currentTarget); // {id: "", offsetLeft: 0, offsetTop: 40, dataset: {…}}
    // 这个时候 这两个是没有区别的
    console.log(event.target === event.currentTarget); // false 它内部 可能是 new了两个 target
    // 触发事件的组件:inner/蓝色  处理事件的组件:outer/粉色

    // 3.获取自定义属性 name
    // const name = event.target.dataset.name // 这样是拿不到的 (点击中间蓝色视图)
    const name = event.currentTarget.dataset.name // 那自定义属性,最好使用currentTarget拿
    console.log(name)
  }

touches和changedTouches的区别(比较少用到)

  • touches和changedTouches 都是记录 手指在对屏幕进行触摸时的触摸点
  • 在一个手指 先按住, 过一秒之后,不松开 再陆续对屏幕进行触摸三次(不松手)时,touches此时有4个元素,而changedTouches 只有三个
  • 在touchend中也不同
  •  

四、事件参数传递方法

事件参数的传递

  • 当视图层发生事件时,一些情况是需要事件携带一些参数到执行的函数中, 这个时候就可以通过data-属性来完成:
  • 格式:data-属性的名称
  • 获取: e.currentTarget.dataset. 属性的名称

五、事件传递案例练习

 

六、逻辑传递数据另外一种方式:Mark

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/104446.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

怎么智能配音?推荐几个比较实用的配音方法给你

现在我们的生活变得越来越便捷化,越来越多的新鲜事物出现在我们的眼前,比如配音。随着短视频的火爆,相信屏幕前的你也剪辑过视频吧。给视频剪辑的过程中,为视频中的文字内容进行配音是一个必不可少的剪辑步骤,这样可以…

数字孪生智慧场馆项目应用场景展示

近年来,发展"数字经济"和建设"数字孪生城市"相继被提升为国家发展战略, 如何运用数字孪生技术活化体育场馆运用场景成了场馆智慧化建设道路上需要思考的问题。 数字孪生智慧场馆项目 北京智汇云舟科技有限公司成立于2012年,专注于创新性的“视…

IOT知识记录

文章目录物联网程序设计GPIO 端口配置结构体定义 //代码规范样例NB模组运行流程LORAWAN模组1. 基础知识:2. 运行流程:4G 和WIFIGPRSPDN与APNPDP上下文和PDP地址APN:APN即“接入点名称”物联网 程序设计 程序框架的规划各个模块功能的细分系…

氧饱夹语音芯片,内置功放直推喇叭输出,低成本语音IC,WTN6系列

血氧夹能够实时检测用户当前的血氧饱和度,相比于传统没有嵌入语音芯片的血氧夹,只有一个显示屏,无法直观知道当前血氧是正常还是偏低,需要用户查阅一些资料/问客服如何使用,大大降低了产品的体验; 添加了语…

界面控件DevExpress WPF中文指南 - 主题设计器工作区介绍

DevExpress WPF拥有120个控件和库,将帮助您交付满足甚至超出企业需求的高性能业务应用程序。通过DevExpress WPF能创建有着强大互动功能的XAML基础应用程序,这些应用程序专注于当代客户的需求和构建未来新一代支持触摸的解决方案。 DevExpress WPF的Them…

统一自己的mac和linux环境的终端使用(alacritty+tmux代替iterm2)

升级切换了下自己的终端工具tmux配置,终端工具从iterm2改到了alacritty。 为什么切换终端 快。 alacritty使用GPU进行渲染,可以做到其他无法实现的性能优化。小。 iterm2快40m,alacritty只有10m,当然这个只能算小优点&#xff0…

flex换轴,布局,语法,移动端

物理分辨率&#xff1a; 硬件所支持的&#xff0c;屏幕出厂就设定无法修改逻 辑分辨率&#xff1a; 软件可以达到的&#xff0c; 我们开发中写的是逻辑分辨率 视口&#xff08;viewport&#xff09;就是浏览器显示页面内容的屏幕区域。 <meta name"viewport" c…

栈的分类以及应用场景

栈的本质就是一段内存&#xff0c;程序运行时用于保存一些临时数据。栈大体可以分为四种类型空增、空减、满增、满减。ARM处理器一般使用满减栈。 目录 1、栈的分类 2、压栈/出栈的两种实现方式 (1) 方式一&#xff1a;使用后缀DB / IA (2) 方式二&#xff1a;使用后缀FD …

nexus 远程代码执行 (CVE-2020-10199)

目录 一、漏洞信息 二、影响版本 三、环境搭建 四、漏洞复现 五、修复建议 这里用的是docker desktopvulfocus搭建的环境。 一、漏洞信息 名称: nexus 远程代码执行 &#xff08;CVE-2020-10199/10204&#xff09; 描述: Nexus Repository Manager&#xff08;NXRM&a…

K8s 滚动升级与回退

目录前言一、升级二、回滚前言 Rolling Update 即滚动更新&#xff0c;先更新一部分副本&#xff0c;成功后再继续更新更多副本&#xff0c;最终完成所有的副本更新。前面说到动态伸缩容并不会触发上线&#xff0c;仅当 Deployment Pod 模板&#xff08;即 .spec.template&…

代码随想录拓展day1 1365.有多少小于当前数字的数字;941.有效的山脉数组;

代码随想录拓展day1 1365.有多少小于当前数字的数字&#xff1b;941.有效的山脉数组&#xff1b;1207.独一无二的出现次数&#xff1b;283. 移动零 打卡结束了&#xff0c;趁着世界杯当了几天懒狗&#xff0c;现在正好世界杯也结束了&#xff0c;希望能保持一个好习惯吧。 13…

m基于DCAR编码感知的网络路由发现算法matlab仿真

目录 1.算法描述 2.仿真效果预览 3.MATLAB核心程序 4.完整MATLAB 1.算法描述 1.路由请求过程 当一个源节点有数据要向目的节点发送且在当前路由缓存中未发现可用路径时&#xff0c;则启动路由请求过程&#xff0c;下面分步对该过程进行说明&#xff1a; 步骤1&#xff1a…

AI行动,解放做表打工人

1. atomecho 插件介绍 如果你是个—— 需要做财报、数据新闻的冤种&#xff1b; 或者是“网上有的我都想要”的囤积狂魔&#xff1b; 或是沉迷“CtrlC、CtrlV”的做表工具人。 那你一定不陌生—— 对不上的格式、找不到的数据、删不完的无效内容、按烂了的“CtrlC”和“CtrlV…

在Qt creator中查看Qt源码

Qt 是开源语言&#xff0c;阅读其实现的源代码可以帮助我们更好的了解Qt&#xff0c;解决开发中遇到的问题&#xff0c;能帮助我们更快的成长&#xff0c;本文介绍了Qt官方原代码的两种查看方法。 在Qt creator中查看Qt源码在线查看本地查看配置版本一、下载源码1、运行Mainten…

阿里云崩“出圈”了!保护业务还得加一道同云跨可用区容灾!

2022年12月18日&#xff0c;上午10点47分&#xff0c;阿里云的香港部分服务出现故障&#xff0c;导致多个香港及澳门站点受到影响。 随后阿里云方面发布公告表示&#xff0c;阿里云官网 12 月 18 日下午更新处理进展称&#xff0c;经排查&#xff0c;阿里云香港地域故障确认为…

嵌入式Linux驱动开发之点灯

使用驱动开发的方式点亮一个LED灯。看看两者有啥区别不&#xff1f; 一、先看原理图 首先查看原理图&#xff0c;看看我们的板子上的LED等接在哪一个IO口上面。 好了&#xff0c;看原理图我们知道LED灯接在芯片的GPIO1的第三个引脚上面&#xff0c;也就是GPIO1_IO03。 二、I…

优化稠密点之尝试通过 Balance 来分摊访问压力

回忆之前的官方架构图&#xff0c;数据在 storaged 中是分片的&#xff0c;且 raft 协议中只有 leader 才会处理请求&#xff0c;所以&#xff0c;重新进行数据平衡操作&#xff0c;是有可能将多个稠密点分摊到不同的服务上以减轻单一服务的压力。同时&#xff0c;我们对整个集…

记录C,C++关键字的位置,直接跳过注释和字符串文本。(修正)

依据第二版本&#xff0c;可以写一个跳过注释的查找函数 C_IndexOfWord Java_IndexOfWord CSharp_IndexOfWord 还有一种方法&#xff0c;可以先把所有注释用空格代替&#xff0c;查出的字符位置也不变。 以前版本&#xff1a; DList<TextColor> Syntax::GetTextColorP…

(三分钟)学会kd-tree 激光SLAM点云搜索常见

Kd-Tree&#xff1a; 今天来介绍一下有关Kdtree的相关概念&#xff0c;它是一维线段树的多维推广。Kd-tree常用在激光点云编程中使用&#xff0c;Kd-tree简称k维树&#xff0c;是一种空间划分的数据结构&#xff0c;常被用于高维空间中的搜索&#xff0c;比如范围搜索和最近邻…

动态规划问题——最长公共子序列问题

题目: 给定两个字符串 str1 和 str2 &#xff0c;返回两个字符串的最长公共子序列。 举例&#xff1a; str1 "1A2C3D4B56" str2 "B1D23CA45B6A" 最长公共子序列为&#xff1a;"123456" 或 "12C4B6" 返回哪个都行 思路&#xf…