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

简介: 微信小程序 | 小程序的事件处理

一、小程序的事件监听

事件的监听

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

ec621ae2b3c143089e4142c367bd696a.png

三、事件对象属性分析

事件对象event

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

befb19f61fb740039cbc002455e93b82.png

currentTarget和target的区别

3d4b1b717e96465a84d6878beb15899b.png

c668363174e14775a7eb0da5c20419b0.png

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中也不同

790bfa4d9ade4da59a1768d3167905ec.png

2a6c352969554e3fb1c217e596b4fb3a.png

四、事件参数传递方法

事件参数的传递

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

770811845dd9473db7b5281fb1ab961e.png

72803351375c4d7bb3bd47380810c188.png

五、事件传递案例练习

82ae1212702c45bcbe15ec6d188f4c3f.png

be1ee7c3072449a0be5e4817e835362f.png

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

b1e274d5f989428a943d1960b73d7e13.png

a25571f403064889b2d74daffa7d4cdc.png

10fd0150aeb24a688c5168f0aefcbc74.png

相关文章
|
5天前
|
缓存 小程序 前端开发
商城/点餐/家政类小程序源码合集_微信抖音小程序源码开发从入门到精通实战
本文系统讲解如何利用现有源码快速开发商城、点餐、家政类微信/抖音小程序,涵盖环境搭建、核心功能实现、多平台部署与优化,提供完整技术方案。实战导向,助力开发者高效入门与落地。
|
7天前
|
存储 小程序 Java
热门小程序源码合集:微信抖音小程序源码支持PHP/Java/uni-app完整项目实践指南
小程序已成为企业获客与开发者创业的重要载体。本文详解PHP、Java、uni-app三大技术栈在电商、工具、服务类小程序中的源码应用,提供从开发到部署的全流程指南,并分享选型避坑与商业化落地策略,助力开发者高效构建稳定可扩展项目。
|
4月前
|
小程序 前端开发 Android开发
小程序微信分享功能如何开发?开放平台已绑定仍不能使用的问题?-优雅草卓伊凡
小程序微信分享功能如何开发?开放平台已绑定仍不能使用的问题?-优雅草卓伊凡
1022 29
小程序微信分享功能如何开发?开放平台已绑定仍不能使用的问题?-优雅草卓伊凡
|
4月前
|
JSON 监控 小程序
微信百度字节小程序包过大解决方案(实战经验总结)-优雅草卓伊凡|果果|小无
微信百度字节小程序包过大解决方案(实战经验总结)-优雅草卓伊凡|果果|小无
276 14
微信百度字节小程序包过大解决方案(实战经验总结)-优雅草卓伊凡|果果|小无
|
6月前
|
存储 移动开发 小程序
校园圈子系统小程序(圈子论坛、私信聊天、资料共享、二手交易、兼职,跑腿)开源码开发/微信公众号、小程序、H5多端账号同步/搭建多城市的综合社交生活平台
基于开源技术栈构建的校园圈子系统小程序,整合社交与生活服务功能,涵盖兴趣圈子、私信聊天、资料共享、二手交易、兼职跑腿等六大核心模块。通过多端账号同步(微信公众号/小程序/H5),实现数据实时交互,满足学生群体的多元化需求。项目精准锚定校园市场,以“社交+服务”双轮驱动,提供一站式解决方案,支持快速部署与多校区运营,同时具备广告、佣金、会员等多元变现能力,是打造校园生态的理想工具。
561 2
校园圈子系统小程序(圈子论坛、私信聊天、资料共享、二手交易、兼职,跑腿)开源码开发/微信公众号、小程序、H5多端账号同步/搭建多城市的综合社交生活平台
|
11月前
|
存储 JSON 小程序
微信小程序入门之新建并认识小程序结构
微信小程序入门之新建并认识小程序结构
174 1
|
7月前
|
小程序 数据安全/隐私保护 开发者
【02】微信支付商户申请下户到配置完整流程-微信开放平台申请APP应用-微信商户支付绑定appid-公众号和小程序分别申请appid-申请+配置完整流程-优雅草卓伊凡
【02】微信支付商户申请下户到配置完整流程-微信开放平台申请APP应用-微信商户支付绑定appid-公众号和小程序分别申请appid-申请+配置完整流程-优雅草卓伊凡
386 3
|
7月前
|
人工智能 小程序 程序员
【视频测评 DEMO 参考】VSCode 神级 AI 插件通义灵码:完全免费+实战教程+微信贪吃蛇小程序
VSCode 神级 AI 插件通义灵码:完全免费+实战教程+微信贪吃蛇小程序
568 8
|
7月前
|
存储 小程序 前端开发
微信小程序与Java后端实现微信授权登录功能
微信小程序极大地简化了登录注册流程。对于用户而言,仅仅需要点击授权按钮,便能够完成登录操作,无需经历繁琐的注册步骤以及输入账号密码等一系列复杂操作,这种便捷的登录方式极大地提升了用户的使用体验
2359 12
|
7月前
|
小程序
微信小程序数据绑定与事件处理:打造动态交互体验
在上一篇中,我们学习了搭建微信小程序开发环境并创建“Hello World”页面。本文深入探讨数据绑定和事件处理机制,通过具体案例帮助你打造更具交互性的小程序。数据绑定使用双花括号`{{}}`语法,实现页面与逻辑层数据的动态关联;事件处理则通过`bind`或`catch`前缀响应用户操作。最后,通过一个简单的计数器案例,巩固所学知识。掌握这些核心技能,将助你开发更复杂的小程序。

热门文章

最新文章