【微信小程序开发】深入探索事件绑定、事件冒泡、页面跳转的逻辑实现

本文主要是介绍【微信小程序开发】深入探索事件绑定、事件冒泡、页面跳转的逻辑实现,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

在这里插入图片描述

✨✨ 欢迎大家来到景天科技苑✨✨

🎈🎈 养成好习惯,先赞后看哦~🎈🎈

🏆 作者简介:景天科技苑
🏆《头衔》:大厂架构师,华为云开发者社区专家博主,阿里云开发者社区专家博主,CSDN全栈领域优质创作者,掘金优秀博主,51CTO博客专家等。
🏆《博客》:Python全栈,前后端开发,小程序开发,人工智能,js逆向,App逆向,网络系统安全,数据分析,Django,fastapi,flask等框架,linux,shell脚本等实操经验,网站搭建,数据库等分享。

所属的专栏:微信小程序开发零基础教学,难点与应用实战总结
景天的主页:景天科技苑

文章目录

  • 事件绑定
    • 事件绑定定义
    • 最简单使用
  • 事件冒泡
    • 定义
    • 事件对象-传参
  • 页面跳转
    • 1.组件跳转(声明式导航)
    • 2.最基本的跳转
    • 3.更多跳转方式--》open-type属性跳转方式
      • 3.1 上述演示
    • 4.跳转携带参数
    • 5.js跳转(编程式导航)

事件绑定

事件绑定定义

事件绑定指的是某些按钮,或者某些组件,在我们点击的时候,能够触发事件执行

  • 打印xx
  • 向后端发送请求
  • 。。。。

最简单使用

wxml中

绑定事件语法 bind:tap 绑定点击事件

<button type="warn" plain size="mini" bind:tap="handleConsole">点击控制台打印</button>

可以绑定很多事件,但是我们用的最多的还是点击事件
在这里插入图片描述

绑定事件,需要赋值一个js的方法名,在js代码中写

js中

所有js代码,必须放在Page里面

Page({handleConsole(){console.log('我被点了')},})

当我们点击按钮,就会在触发绑定事件,在控制台打印出内容
在这里插入图片描述

bind:tap=“handleConsole” 可以简写,把冒号去掉。 bindtap=“handleConsole”
在这里插入图片描述

事件冒泡

定义

当子标签和父标签/祖籍标签绑定了相同的事件后,当子标签事件触发,会继而触发父级标签/祖籍标签的事件
点击儿子标签会触发父级标签\祖父标签…等等的所有点击事件,这叫事件冒泡

父组件–》套了子组件

  • 子组件上有事件

  • 父组件上也绑定了事件

  • 点击子组件–》子组件事件触发—》父组件事件也会触发

  handleParent(){console.log("父亲被点了")},handleChildren(){console.log("孩子被点了")},

wxml

<view style="height: 400rpx;width: 750rpx; background-color: pink; display: flex; justify-content: center;align-items: center;" bind:tap="handleParent"><button type="primary" plain bind:tap="handleChildren">按钮1</button>

阻止事件冒泡,使用catch来绑定事件

<button type="primary" plain catch:tap="handleChildren">阻止事件冒泡</button>
</view>

点击按钮1,发生了事件冒泡
在这里插入图片描述

点击阻止事件冒泡,只有子组件里面的事件触发了,阻止了事件冒泡
在这里插入图片描述

事件对象-传参

  • 1 当绑定了事件后–》函数都是可以接收一个参数 事件对象(event)

  • 2 传参–》放到event事件对象中–》js中可以取出来使用,事件对象传参有如下两种方式

    • data-* 方案
    • mark: 用来自定义属性

js代码

js代码函数里面的参数event就是事件对象

  handleClick01(event){//currentTarget:事件绑定者--->view//target: 事件触发者--》view// 如果有事件冒泡--》他们里面的值是不一样的console.log(event)console.log(event.target.dataset)console.log(event.target.dataset.name)console.log(event.mark.name)}

wxml代码
在这里设置参数和参数值

<view bind:tap="handleClick01" data-id='1001' data-name='jingtian' mark:name='xxx'>点我</view>

当点击 点我,js会把参数放到event对象中传进去,会在控制台打印出我们设置的内容
通过data-* 设置的参数,通过event.target.dataset来获取
通过mark设置的参数,通过event.mark来获取
在这里插入图片描述
在这里插入图片描述

页面跳转

1.组件跳转(声明式导航)

  • navigator 组件跳转 ,在组件上加属性–》实现跳转
    先创建个页面
    在这里插入图片描述

2.最基本的跳转

然后在我的页面添加个导航按钮

<!-- 组件跳转,用navigator,通过url指定要跳转的路径 --><navigator url="/pages/login/login"><button type="primary" plain>去登录</button></navigator>

在这里插入图片描述

点击去登录,就会哦跳转到登录页面
在这里插入图片描述

3.更多跳转方式–》open-type属性跳转方式

navigate(默认):保留当前页面,所以左上角有个返回按钮,跳转到应用内的某个页面。但是不能跳到 tabbar 页面
redirect: 关闭当前页面,左上角没有返回按钮,只有返回主页面按钮,跳转到应用内的某个页面。但不能跳转到 tabbar 页面
switchTab:只能跳转到 tabBar 页面,并关闭其他所有非 tabBar 页面
reLaunch:关闭所有页面,打开到应用内的某个页面
navigateBack:关闭当前页面,返回上一页面或多级页面

3.1 上述演示

<navigator url="/pages/login/login"><button type="primary" plain>去登录</button></navigator>
<navigator url="/pages/login/login" open-type="navigate"><button type="primary" plain>去登录2</button></navigator>

默认的可以返回原页面
在这里插入图片描述

<navigator url="/pages/login/login" open-type="redirect"><button type="primary" plain>去登录3</button></navigator>

redirect不再有返回上一页页面,而是返回主页面按钮
在这里插入图片描述

<navigator url="/pages/index/index" open-type="switchTab"><button type="primary" plain>去首页</button></navigator>

可以跳转到指定的tabBar
在这里插入图片描述

一点,就返回到了首页
在这里插入图片描述

<navigator url="/pages/login/login" open-type="reLaunch"><button type="primary" plain>去登录4</button></navigator>

跳转到指定页面
在这里插入图片描述

回退,一般写在被跳转的页面中,当跳转过来,点击回退就会回退到之前页面,当然如果之前页面被销毁,也是回退不了的

<navigator open-type="navigateBack" ><button>回退</button></navigator>

在这里插入图片描述

4.跳转携带参数

  • 直接在跳转处用问号跟参数,多个参数用&连接:
<navigator url="/pages/login/login?name=jingtian&age=19"><button type="primary" plain>去登录</button></navigator>

此时,我们可以通过开发工具下面的页面参数看到携带的参数
在这里插入图片描述

一点击按钮,就可以携带的参数
在这里插入图片描述

  • 携带的参数,则呢么获取呢,需要写在js的生命周期的钩子中
    在这里插入图片描述
 onLoad(options) {console.log(options)},

点击去登录,就可以在控制台看到携带的参数
在这里插入图片描述

5.js跳转(编程式导航)

使用js控制跳转

5个方法–》跟上面是对应的

wx.navigateTo({url: 'url',
})wx.redirectTo({url: 'url',
})wx.switchTab({url: 'url',
})wx.reLaunch({url: 'url',
})wx.navigateBack()

页面

<button type="default"  bind:tap="handlenavigateTo">navigateTo</button>
<button type="warn" bind:tap="handleredirectTo">redirectTo</button>
<button type="primary" bind:tap="handleswitchTab">switchTab</button>
<button type="default" bind:tap="handlereLaunch">reLaunch</button>
<button type="warn" bind:tap="handlenavigateBack">navigateBack</button>

js
使用wx.相关跳转函数即可

  handlenavigateTo(){wx.navigateTo({url: '/pages/login/login',})},handleredirectTo(){wx.redirectTo({url: '/pages/login/login',})},handleswitchTab(){wx.switchTab({url: '/pages/index/index',})},handlereLaunch(){wx.reLaunch({url: '/pages/login/login',})},handlenavigateBack(){// 关闭当前页面,返回上一页或上某一页,传入数字wx.navigateBack()wx.navigateBack({delta:2})},

在这里插入图片描述

在这里插入图片描述

携带参数也是在路径后面加,感兴趣的朋友试试吧

这篇关于【微信小程序开发】深入探索事件绑定、事件冒泡、页面跳转的逻辑实现的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/988956

相关文章

Nginx 配置跨域的实现及常见问题解决

《Nginx配置跨域的实现及常见问题解决》本文主要介绍了Nginx配置跨域的实现及常见问题解决,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来... 目录1. 跨域1.1 同源策略1.2 跨域资源共享(CORS)2. Nginx 配置跨域的场景2.1

Python中提取文件名扩展名的多种方法实现

《Python中提取文件名扩展名的多种方法实现》在Python编程中,经常会遇到需要从文件名中提取扩展名的场景,Python提供了多种方法来实现这一功能,不同方法适用于不同的场景和需求,包括os.pa... 目录技术背景实现步骤方法一:使用os.path.splitext方法二:使用pathlib模块方法三

CSS实现元素撑满剩余空间的五种方法

《CSS实现元素撑满剩余空间的五种方法》在日常开发中,我们经常需要让某个元素占据容器的剩余空间,本文将介绍5种不同的方法来实现这个需求,并分析各种方法的优缺点,感兴趣的朋友一起看看吧... css实现元素撑满剩余空间的5种方法 在日常开发中,我们经常需要让某个元素占据容器的剩余空间。这是一个常见的布局需求

HTML5 getUserMedia API网页录音实现指南示例小结

《HTML5getUserMediaAPI网页录音实现指南示例小结》本教程将指导你如何利用这一API,结合WebAudioAPI,实现网页录音功能,从获取音频流到处理和保存录音,整个过程将逐步... 目录1. html5 getUserMedia API简介1.1 API概念与历史1.2 功能与优势1.3

Java实现删除文件中的指定内容

《Java实现删除文件中的指定内容》在日常开发中,经常需要对文本文件进行批量处理,其中,删除文件中指定内容是最常见的需求之一,下面我们就来看看如何使用java实现删除文件中的指定内容吧... 目录1. 项目背景详细介绍2. 项目需求详细介绍2.1 功能需求2.2 非功能需求3. 相关技术详细介绍3.1 Ja

使用Python和OpenCV库实现实时颜色识别系统

《使用Python和OpenCV库实现实时颜色识别系统》:本文主要介绍使用Python和OpenCV库实现的实时颜色识别系统,这个系统能够通过摄像头捕捉视频流,并在视频中指定区域内识别主要颜色(红... 目录一、引言二、系统概述三、代码解析1. 导入库2. 颜色识别函数3. 主程序循环四、HSV色彩空间详解

一文深入详解Python的secrets模块

《一文深入详解Python的secrets模块》在构建涉及用户身份认证、权限管理、加密通信等系统时,开发者最不能忽视的一个问题就是“安全性”,Python在3.6版本中引入了专门面向安全用途的secr... 目录引言一、背景与动机:为什么需要 secrets 模块?二、secrets 模块的核心功能1. 基

PostgreSQL中MVCC 机制的实现

《PostgreSQL中MVCC机制的实现》本文主要介绍了PostgreSQL中MVCC机制的实现,通过多版本数据存储、快照隔离和事务ID管理实现高并发读写,具有一定的参考价值,感兴趣的可以了解一下... 目录一 MVCC 基本原理python1.1 MVCC 核心概念1.2 与传统锁机制对比二 Postg

SpringBoot整合Flowable实现工作流的详细流程

《SpringBoot整合Flowable实现工作流的详细流程》Flowable是一个使用Java编写的轻量级业务流程引擎,Flowable流程引擎可用于部署BPMN2.0流程定义,创建这些流程定义的... 目录1、流程引擎介绍2、创建项目3、画流程图4、开发接口4.1 Java 类梳理4.2 查看流程图4

C++中零拷贝的多种实现方式

《C++中零拷贝的多种实现方式》本文主要介绍了C++中零拷贝的实现示例,旨在在减少数据在内存中的不必要复制,从而提高程序性能、降低内存使用并减少CPU消耗,零拷贝技术通过多种方式实现,下面就来了解一下... 目录一、C++中零拷贝技术的核心概念二、std::string_view 简介三、std::stri