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

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

在这里插入图片描述

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

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

🏆 作者简介:景天科技苑
🏆《头衔》:大厂架构师,华为云开发者社区专家博主,阿里云开发者社区专家博主,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

相关文章

Python实现对阿里云OSS对象存储的操作详解

《Python实现对阿里云OSS对象存储的操作详解》这篇文章主要为大家详细介绍了Python实现对阿里云OSS对象存储的操作相关知识,包括连接,上传,下载,列举等功能,感兴趣的小伙伴可以了解下... 目录一、直接使用代码二、详细使用1. 环境准备2. 初始化配置3. bucket配置创建4. 文件上传到os

关于集合与数组转换实现方法

《关于集合与数组转换实现方法》:本文主要介绍关于集合与数组转换实现方法,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1、Arrays.asList()1.1、方法作用1.2、内部实现1.3、修改元素的影响1.4、注意事项2、list.toArray()2.1、方

从原理到实战深入理解Java 断言assert

《从原理到实战深入理解Java断言assert》本文深入解析Java断言机制,涵盖语法、工作原理、启用方式及与异常的区别,推荐用于开发阶段的条件检查与状态验证,并强调生产环境应使用参数验证工具类替代... 目录深入理解 Java 断言(assert):从原理到实战引言:为什么需要断言?一、断言基础1.1 语

使用Python实现可恢复式多线程下载器

《使用Python实现可恢复式多线程下载器》在数字时代,大文件下载已成为日常操作,本文将手把手教你用Python打造专业级下载器,实现断点续传,多线程加速,速度限制等功能,感兴趣的小伙伴可以了解下... 目录一、智能续传:从崩溃边缘抢救进度二、多线程加速:榨干网络带宽三、速度控制:做网络的好邻居四、终端交互

java实现docker镜像上传到harbor仓库的方式

《java实现docker镜像上传到harbor仓库的方式》:本文主要介绍java实现docker镜像上传到harbor仓库的方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地... 目录1. 前 言2. 编写工具类2.1 引入依赖包2.2 使用当前服务器的docker环境推送镜像2.2

C++20管道运算符的实现示例

《C++20管道运算符的实现示例》本文简要介绍C++20管道运算符的使用与实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧... 目录标准库的管道运算符使用自己实现类似的管道运算符我们不打算介绍太多,因为它实际属于c++20最为重要的

Java easyExcel实现导入多sheet的Excel

《JavaeasyExcel实现导入多sheet的Excel》这篇文章主要为大家详细介绍了如何使用JavaeasyExcel实现导入多sheet的Excel,文中的示例代码讲解详细,感兴趣的小伙伴可... 目录1.官网2.Excel样式3.代码1.官网easyExcel官网2.Excel样式3.代码

python实现对数据公钥加密与私钥解密

《python实现对数据公钥加密与私钥解密》这篇文章主要为大家详细介绍了如何使用python实现对数据公钥加密与私钥解密,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录公钥私钥的生成使用公钥加密使用私钥解密公钥私钥的生成这一部分,使用python生成公钥与私钥,然后保存在两个文

浏览器插件cursor实现自动注册、续杯的详细过程

《浏览器插件cursor实现自动注册、续杯的详细过程》Cursor简易注册助手脚本通过自动化邮箱填写和验证码获取流程,大大简化了Cursor的注册过程,它不仅提高了注册效率,还通过友好的用户界面和详细... 目录前言功能概述使用方法安装脚本使用流程邮箱输入页面验证码页面实战演示技术实现核心功能实现1. 随机

Golang如何对cron进行二次封装实现指定时间执行定时任务

《Golang如何对cron进行二次封装实现指定时间执行定时任务》:本文主要介绍Golang如何对cron进行二次封装实现指定时间执行定时任务问题,具有很好的参考价值,希望对大家有所帮助,如有错误... 目录背景cron库下载代码示例【1】结构体定义【2】定时任务开启【3】使用示例【4】控制台输出总结背景