微信小程序的事件机制

微信小程序(事件对象-绑定、冒泡、捕获) 拓展: 原生组件 小程序中的部分组件是由客户端创建的原生组件,包含: ①camera ②canvas ③input(仅在focus时表现为原生组件) ④map ⑤textarea ⑥video 一·事件冒泡 ①事件触发验证 <view id="parent" bindtap="parentFn"> <view id="child" bindtap="childFn">&... 阅读详情

比如我们android从一个activity跳转到另一个activity,是通过Intent,而在小程序中从一个界面跳转到另外一个界面是通过什么方式呢?而事件又是什么东东?

什么是事件

  • 事件是视图层到逻辑层的通讯方式。
  • 事件可以将用户的行为反馈到逻辑层进行处理。
  • 事件可以绑定在组件上,当达到触发事件,就会执行逻辑层中对应的事件处理函数。
  • 事件对象可以携带额外信息,如 id, dataset, touches。

事件的使用方式

在组件中绑定一个事件处理函数

如bindtap,当用户点击该组件的时候会在该页面对应的Page中找到相应的事件处理函数

在微信小程序中函数的定义语法

方法名:function(){

 // 方法体

}

在微信小程序中触摸事件是tap,但是我们不能直接在标签中写tap="click" 而是在tap前加上bind,那么触摸事件就是bindtap,还有比如长按事件longpress,那么在标签中也是bindlongpress 

bindtap = "click"  这个意思是当用户在这个组件也就是控件触摸后 会去js中查找click函数并且执行其中代码

click_tap:function(){

console.log("我被点击了");

wx.navigateTo({

url: '../posts/posts',

})

},

这是我点击按钮后跳转到另外一个界面,wx可以看做是微信小程序中的内置对象,对应的url其实就是我们app.json配置的地址

但是很奇怪的问题发生了如图:

发现导航栏会有个返回键,当我点击返回键了以后还是回调了之前的界面.那么就相当于我们打开的界面是它的子界面,如果你不想有返回键,也就是说不想让它是子界面,可以这么弄:

click_tap:function(){

console.log("我被点击了");

wx.redirectTo({

url: '../posts/posts',

})

},

这样导航栏就不在会有返回键了,而成了它是个主界面.

上次讲的生命周期方法有二个方法没说onHide() onUnload()  如果哦懂android得话 这二个方法很好理解,onHide()方法相当于onPause()  onUnload()相当于onDestory()方法如果我们界面跳转是使用了wx.navigateTo,那么我们跳转后那个界面还在的,只是被隐藏了而已,假如我们跳转的是用wx.redirectTo,那么上一个界面就是被销毁了,但是在微信小程序中叫做卸载.

现在我们来做一个实验,

<view class="top_container" bindtap='onParentTap'>

<text class='user_name' bindtap='onSubTap'>开启小程序旅程</text>

</view>

我在text的父标签view上也添加了触摸事件,text本身也添加了触摸事件,通过log日记来分析下,在Page下添加二个函数:

onSubTap:function(){

console.log("text被点击了");

},

onParentTap: function () {

console.log("tex的父标签t被点击了");

},

点击text log如下:

点击view的log如下 也就是点击非文字区域:

从中我可以发现如果是点击了子标签,如果父标签也设置了触摸的话,也会执行,这在微信小程序中叫做冒泡事件,在文档中也有列出来一些冒泡事件。

事件分为冒泡事件和非冒泡事件:

  1. 冒泡事件:当一个组件上的事件被触发后,该事件会向父节点传递。
  2. 非冒泡事件:当一个组件上的事件被触发后,该事件不会向父节点传递。

WXML的冒泡事件列表:

类型触发条件最低版本
touchstart手指触摸动作开始 
touchmove手指触摸后移动 
touchcancel手指触摸动作被打断,如来电提醒,弹窗 
touchend手指触摸动作结束 
tap手指触摸后马上离开 
longpress手指触摸后,超过350ms再离开,如果指定了事件回调函数并触发了这个事件,tap事件将不被触发1.5.0
longtap手指触摸后,超过350ms再离开(推荐使用longpress事件代替) 
transitionend会在 WXSS transition 或 wx.createAnimation 动画结束后触发 
animationstart会在一个 WXSS animation 动画开始时触发 
animationiteration会在一个 WXSS animation 一次迭代结束时触发 
animationend会在一个 WXSS animation 动画完成时触发 
touchforcechange在支持 3D Touch 的 iPhone 设备,重按时会触发1.9.90

注:除上表之外的其他组件自定义事件如无特殊声明都是非冒泡事件,如<form/>的submit事件,<input/>的input事件,<scroll-view/>的scroll事件,(详见各个组件)

如果你想阻止冒泡事件,就不要使用bind...等绑定事件,而是使用catch,还是以我们上面的例子:

<view class="top_container" catchtap='onParentTap'>

<text class='user_name' catchtap='onSubTap'>开启小程序旅程</text>

</view>

入门微信小程序开发(四)理解小程序事件与冒泡机制 一.初识小程序事件 在小程序中,事件是视图层到逻辑层的通讯方式。 比如,我们可以将事件绑定在组件上,当用户操作该组件并触发事件时,事件会将用户行为反馈到逻辑层做处理,也就是对应的执行逻辑层中的事件处理函数。 当然,有时候行为反馈不一定是由用户来主动触发,举个生活中的例子,我们在腾讯视频看龙岭迷窟时,当播放到一集结尾,视频会自动播放下一集。将这个例子拿到小程序中来说,video组件便自带了bindended事件,只要视频播放到末尾便会触发该事件,小程序中存在很多由组件自身提供的事件,所以综合来说,小程序 阅读详情

相关推荐

探索微信小程序的事件处理机制:交互体验的核心

微信小程序是一种不需要下载安装即可使用的应用,它具有轻量、快速的特点。用户可以通过微信扫一扫或搜索即可打开小程序,实现快速的信息获取与功能体验。在小程序中,事件可以是用户触发的行为,比如点击、滑动、输入等。这些事件分为两类:系统事件和自定义事件。开发者可以根据需要创建自定义事件,以实现更灵活的交互。比如,创建一个自定义事件来处理用户点击某个特定区域的操作。

csdn_te_DOWNload_005的博客 1090

微信小程序开发系列(十五)·bind 绑定的事件(冒泡事件)、catch 绑定的事件(非冒泡事件)

当一个组件的事件被触发后,该事件不会向父节点传递,若此时父节点也有绑定事件,则不会触发父节点的事件。使用 bind 绑定的事件,会触发事件冒泡,如果想阻止事件冒泡,可以使用 catch 来绑定事件。:当一个组件的事件被触发后,该事件会向父节点传递,若此时父节点也有绑定事件,则会一并触发。

时光の尘的博客 3475

别光会点按钮!深入理解微信小程序的bindtap事件与setData更新机制

本文深入解析微信小程序开发中的bindtap事件与setData更新机制,揭示其底层实现原理与性能优化策略。通过详细讲解事件绑定、数据更新流程及常见问题,帮助开发者掌握高效的小程序开发技巧,提升应用性能与用户体验。

weixin_33712987的博客 280

《微信小程序-基础篇》小程序中的事件与冒泡

本文难度属于:初级,适合 初学小程序的开发者,通过本文,你可以了解到 小程序中的事件是什么,如何 执行事件 以及 当事件冒泡时有什么具体应用

Oliver尹的博客 4153

微信小程序阻止事件冒泡【看这里】

uniapp、微信小程序阻止事件冒泡

江拥羡橙的博客 6万+

【规则引擎连载3】 WebSphere ILOG JRules 开发——新建一个规则项目

规则项目依赖于bom,bom来自于一个Java项目,所以在建规则项目之前,需要先建立一个Java项目,也就是建模。 说明:原则上是一个规则项目,一个bom。如果规则项目很多,并且每个规则项目的bom都是一样的,那么可以将bom提取出来,单独作为一个项目,这样减少不必要的重复操作,减少维护成本,降低出错几率。这里逐步讲解两种方法来创建规则项目,推荐第二种。 本文主要建立两种规则项目与bom之间的关系,编写相关的规则内容,如操作规则、规则流、决策表等,在后续文章中详细讲解 。

manman的分享 2327

微信小程序中事件触发机制及防抖节流

微信小程序中的事件触发机制在高频交互场景下,可能导致性能瓶颈。通过防抖和节流技术,开发者可以优化事件的触发频率,减少资源消耗。本文详细介绍了防抖与节流的概念、应用场景及具体实现方式,并结合实际开发中的场景进行了代码演示。同时分析了不同的传参方式及其优缺点,帮助开发者灵活应对复杂的交互需求。

qq_40791475的博客 4161

2025年第十六届蓝桥杯省赛C/C++大学B组 个人题解

也是写了写部分题解,朱波也是狠狠水了个省二┭┮﹏┭┮,毕竟许多算法知识没怎么学。

2301_80173664的博客 2431

微信小程序事件机制全解析

微信小程序的事件分为冒泡事件和非冒泡事件两大类。冒泡事件(如tap、longpress等)通过bind绑定,会从子组件向父组件传播,可使用stopPropagation阻止冒泡;非冒泡事件(如catchtap)通过catch绑定,不会向上传播。此外小程序还支持捕获事件(capture-bind/capture-catch)用于处理事件流的不同阶段。事件对象包含type、target等属性及stopPropagation方法。开发者应根据实际交互需求选择合适的事件类型,bind适合协同操作,catch适合独立

爱的叹息的专栏 766

用AI画电路板AI EDA初探Creating WiFi Radio with CELUS: A Step-by-Step Tutorial 使用CELU.IO创建WiFi收音机:分步教程

结论:整体还不太成熟,所选器件单元是欧美思维,器件选型成本和咱们华强北还是无法比。可以关注迭代,看客就当走马观花就行了;不过里面的单元模块还带有AI提问的这个比较好,值得国内EDA从业者学习。话不多说上正文:本教程目的是让我们深入了解如何使用CELUS设计平台构建WiFi收音机实战项目。本指南的重点是使用该平台来选择正确的解决方案,并整合一个项目,让您可以将音乐和节目从互联网直接传输到您自己构建的扬声器。

2301_81235726的博客 1万+

高项49个过程,输入、工具技术、输出的思维导图

为了制定项目章程的管理方法主要是采用了数据收集技术,例如通过头脑风暴,通过召集主题专家和团队成员收集信息、解决方案,并在短时间内获得大量创意,并对大量创意进行分析和排序,选出最优化最适合本项目方案,并对项目成员的不同差异观点,进行了引导和对冲突的管理,最终有助于项目干系人的目标、成功标准的内容达成一致意见,形成完善的项目章程。在本过程中得到项目章程,在制定项目章程中需要包括信息有:项目名称、项目目标、项目总里程碑进度表、项目经理、主要干系人及财务预算信息。本过程在仅开展一次,或仅在项目的预定义点开展。

Legend_Jiang的博客 6179

微信小程序里的事件机制

一,小程序里的事件机制 和网页开发一样,小程序里的事件机制原里上是一样的,都需要先经过捕获阶段,后经过冒泡阶段,即使一个绑定在组件上的事件被触发后需要经过这两个阶段(在以下描述中,默认认为事件为同一类型) 1,捕获阶段 当绑定在组件上的事件触发时,首先会进入捕获阶段,在这个阶段中会以这个组件向外的最外层组件开始,逐一地向内收缩检测是否有捕获阶段事件的组件,有的话,就会触发;当捕获阶段执行到刚刚那个...

weixin_44646986的博客 589

UE5 VlcMedia 插件编译与流媒体播放实战

本文详细介绍了在虚幻引擎5中编译并集成VlcMedia插件以解决流媒体播放难题的实战指南。针对UE5不再默认支持Win32 API导致的编译错误,文章提供了核心的构建配置文件修改步骤,并指导如何启用插件、创建VLC媒体播放器,最终成功播放如.m3u8等格式的网络直播流或点播视频。

weixin_29013129的博客 339

【视频教程】微信小程序开发-框架篇3 事件机制

微信小程序开发-框架篇3 事件机制 这次给大家介绍一下微信小程序中,UI界面(视图层)和逻辑层代码间的通信机制--事件机制,通过这个介绍,大家可以知道如何获取并处理用户的界面操作。 ...

weixin_34014277的博客 94

GVINS数据采集(u-blox fp9 + D435i)

1、配置千寻的RTK账号 采集数据当天购买千寻的RTK账号,然后在Window下,输入账号和密码 (具体的步骤如之前面连接所示),查看u-center软件上的信息,确保接收机可以收到RTK信息; 2、查看Linux系统下u-blox是否可以正常接受GPS信号和RTK数据流 1、GPS信号信息 // 打开端口 1 cd ublox_f9p/src // 或者在终端1下也可以 source devel/setup.bash r.....................

努力努力努力 2609

深入Scrapy ItemLoader:打造优雅高效的Python爬虫数据清洗流水线

ItemLoader是 Scrapy 提供的声明式数据加载工具。它的核心理念是:将数据提取(从response中取原始值)和数据清洗/验证(处理空值、格式转换、默认值等)分离开。你可以把它想象成一个工厂流水线:原始零件(selector提取的文本)进入,经过一道道工序(输入处理器),组装成最终产品(Item字段)。首先在items.py中定义清晰的数据结构。使用搭配类型注释(虽然Scrapy自身不强制,但对人和IDE友好)。

2201_76125261的博客 68

微信小程序 基础 - 06 (事件处理:冒泡事件、非冒泡事件,事件绑定机制)

小程序的事件处理 事件是视图层到逻辑层的通讯方式。它可以将用户的行为反馈到逻辑层进行处理。 1、事件类型 在微信小程序中,事件类型分类两大类: 冒泡事件:当一个组件上的事件被触发后,该事件会向父节点传递。 非冒泡事件:当一个组件上的事件被触发后,该事件不会向父节点传递。 冒泡事件 以下表格列出了小程序中定义的常用的冒泡事件: 类型 触发条件 touchstart 手指触摸动作开始 touchmove 手指触摸后移动 touchcancel

欢迎来到猫猫的博客 o_o ,如有问题,欢迎提出改正~ 925

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

微信小程序的事件机制---冒泡与非冒泡事件

在微信小程序中,可以看到同为点击事件,有的是bindtap而有的是catchtap,那么这两者有什么区别呢?为了进一步了解微信小程序的事件机制,在原DEMO的基础上增加了一个简单的页面。效果如下。 Paste_Image.png 红黄绿分别代表三个view。 红是最外层的, 黄绿依次为中底层。 每一层view对应着一个点击事件。(outtap,midtap,innertap)。 Pag...

做工作不具体化,想问题就会简单化 2246

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

微信小程序之加载更多(分页加载)实例 ,android事件分发机制面试

加载更多(分页加载) 当用户打开一个页面时,假设后台数据量庞大时,一次性地返回所有数据给客户端,页面的打开速度就会有所下降,而且用户只看上面的内容而不需要看后面的内容时,也浪费用户流量,基于优化的角度来考虑,后台不要一次性返回所有数据,当用户有需要再往下翻的时候,再加载更加数据出来。 业务需求: 列表滚动到底部时,继续往上拉,加载更多内容 必备参数: (1)pageindex: 1 //第几次加载 (2)callbackcount: 15 //需要返回数据的个数 其他参数: 根据接口的所需参数 实现原 理.

wqwq_22的博客 328

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

微信小程序高质量极速入门:事件篇

微信小程序的事件机制类似于Web开发中的事件处理,是用户在界面上的操作(如点击、滑动等)所触发的。通过此篇文章,你将掌握常见的时间类型、事件绑定与处理、核心事件对象、事件的冒泡机制。

谷美的互联网练摊记 798

微信小程序的事件处理机制—捕捉与回调

处理事件机制: 1.产生事件:eg: tap 触发条件:手指触摸后马上离开; 2.捕捉事件:放在要点击的组件中,当用户点击该组件的时候会在该页对应的Page中找到相应的事件处理函数 bind:事件类型 =“事件处理函数”(也可以省略“:”)eg:bind:tap="tapname" 3.回调函数:在相应的Page定义中写上相应的事件处理函数,参数的event; Page({ tapNam...

weixin_43787178的博客 1438
上一篇: 微信小程序数据绑定
下一篇: 微信小程序列表页
zhoushenxian
博客等级 码龄12年 453粉丝 549原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值