当前位置: 首页 > news >正文

自定义提示确认弹窗-vue

最初可运行代码

弹窗组件代码:

(后来发现以下代码可运行,但打包 typescript 类型检查出错,可打包的代码在文末)

<template><div v-if="isVisible" class="dialog"><div class="dialog-content"><div style="padding: 40px 40px; text-align: center">{{message}}</div><div style="display: flex; border-top: 1px solid #d2d0d0"><div @click="cancel" class="dialog-button">取消</div><div style="border-right: 1px solid #d2d0d0"></div><div @click="handleConfirm" class="dialog-button" style="color: #4e8fd3">确定</div></div></div></div>
</template><script setup lang="ts">
import { ref } from 'vue';const isVisible = ref(false);
const message = ref('');
const confirmCallback = ref(null)
const cancelCallback = ref(null);const showDialog = (params = {} ) => {isVisible.value = true;message.value = params.message || '提示内容';confirmCallback.value = params.confirmCallback || null;cancelCallback.value = params.cancelCallback || null;
};const handleConfirm = () => {if (confirmCallback.value) {confirmCallback.value();}isVisible.value = false;
};const cancel = () => {if (cancelCallback.value) {cancelCallback.value();}isVisible.value = false;
};defineExpose({showDialog
});
</script><style scoped>
.dialog {position: fixed;top: 0;left: 0;width: 100%;height: 100%;background-color: rgba(0, 0, 0, 0.5);display: flex;justify-content: center;align-items: center;font-size: 16px;
}.dialog-content {background-color: #fff;border-radius: 10px;width: 80%;
}.dialog-button {flex-grow: 1;text-align: center;padding: 20px 0;
}
</style>

效果:更适用于移动端

弹窗显示:

<template><div><button @click="openDialog">打开弹窗</button><ChildDialg ref="dialogRef" /></div>
</template><script setup lang="ts">
import { ref } from 'vue';// 1. 引入子组件
import ChildDialg from "@/views/components/ChildDialg.vue";// 2. 定义子组件 ref 参数
const dialogRef = ref(null);const openDialog = () => {// 3. 弹窗显示dialogRef.value.showDialog({message: '内容',confirCallback: () => {}});
};
</script>

打包 typescript 检查错误修复

######## 项目打包,typescript 类型检查报错 ###########

1. 函数接收类没有属性定义

2. 调用弹窗时未作 组件 非空判断

3. 接收的回调函数参数,定义的初始值为 null ,无法以函数方式调用

4. 定义的组件 ref 参数默认值为 null ,无法调用子组件暴露的函数

5. 子组件定义的参数 与 父组件传递的参数不一致(定义了取消回调,但没有传入)

可以选择传入“取消”操作的回调函数,但考虑到此组件在我实际运用时取消没有其它操作,便选择不定义其回调函数

最终可打包的代码

<template><div v-if="isVisible" class="dialog"><div class="dialog-content"><div style="padding: 40px 40px; text-align: center">{{message}}</div><div style="display: flex; border-top: 1px solid #d2d0d0"><div @click="cancel" class="dialog-button">取消</div><div style="border-right: 1px solid #d2d0d0"></div><div @click="handleConfirm" class="dialog-button" style="color: #4e8fd3">确定</div></div></div></div>
</template><script setup lang="ts">
import { ref } from 'vue';const isVisible = ref(false);
const message = ref('');
const confirmCallback = ref(() => {})
const cancelCallback = ref(() => {});const showDialog = (params = {message: '提示内容',confirmCallback: () => {}
} ) => {isVisible.value = true;message.value = params.message;confirmCallback.value = params.confirmCallback;
};const handleConfirm = () => {if (confirmCallback.value) {confirmCallback.value();}isVisible.value = false;
};const cancel = () => {if (cancelCallback.value) {cancelCallback.value();}isVisible.value = false;
};defineExpose({showDialog
});
</script><style scoped>
.dialog {position: fixed;top: 0;left: 0;width: 100%;height: 100%;background-color: rgba(0, 0, 0, 0.5);display: flex;justify-content: center;align-items: center;font-size: 16px;
}.dialog-content {background-color: #fff;border-radius: 10px;width: 80%;
}.dialog-button {flex-grow: 1;text-align: center;padding: 20px 0;
}
</style>
<template><div><button @click="openDialog">打开弹窗</button><ChildDialg ref="dialogRef" /></div>
</template><script setup lang="ts">
import { ref } from 'vue';// 1. 引入子组件
import ChildDialg from "@/views/components/ChildDialg.vue";// 2. 定义子组件 ref 参数
const dialogRef = ref<InstanceType<typeof  DialogView> | null>(null)const openDialog = () => {// 3. 弹窗显示if(dialogRef.value) {dialogRef.value.showDialog({message: '内容',confirCallback: () => {}});}
};
</script>

相关文章:

自定义提示确认弹窗-vue

最初可运行代码 弹窗组件代码&#xff1a; &#xff08;后来发现以下代码可运行&#xff0c;但打包 typescript 类型检查出错&#xff0c;可打包的代码在文末&#xff09; <template><div v-if"isVisible" class"dialog"><div class&quo…...

运行fastGPT 第五步 配置FastGPT和上传知识库 打造AI客服

运行fastGPT 第五步 配置FastGPT和上传知识库 打造AI客服 根据上一步的步骤&#xff0c;已经调试了ONE API的接口&#xff0c;下面&#xff0c;我们就登陆fastGPT吧 http://xxx.xxx.xxx.xxx:3000/ 这个就是你的fastGPT后台地址&#xff0c;可以在configer文件中找到。 账号是…...

CSS 合法颜色值

CSS 颜色 CSS 中的颜色可以通过以下方法指定&#xff1a; 十六进制颜色带透明度的十六进制颜色RGB 颜色RGBA 颜色HSL 颜色HSLA 颜色预定义/跨浏览器的颜色名称使用 currentcolor 关键字 十六进制颜色 用 #RRGGBB 规定十六进制颜色&#xff0c;其中 RR&#xff08;红色&…...

Redis - General - 未授权访问漏洞(用户配置问题)

0x01&#xff1a;产品简介 Redis&#xff08;Remote Dictionary Service&#xff0c;远程数据服务&#xff09;&#xff0c;是一款开源的基于内存的键值对存储系统&#xff0c;其主要被用作高性能缓存服务器使用&#xff08;比如作为消息中间件和用于 Session 共享&#xff09…...

解决 WSL 2 中 Ubuntu 22.04 安装 Docker 后无法启动的问题

问题场景 安装Docker后&#xff0c;执行sudo service docker start启动Docker&#xff0c;提示启动成功 rootDev:~# sudo service docker start * Starting Docker: docker [ OK ]执行su…...

Conda的一些常用命令

以下是Conda的一些常用命令&#xff1a; pip freeze > requirements.txt pip install -r requirements.txt 基本信息查看类 查看conda版本&#xff1a; conda -V 或 conda --version 可以查看当前安装的conda版本。 查看conda帮助信息&#xff1a; conda -h 或 conda --he…...

AI 大爆发时代,音视频未来路在何方?

AI 大模型突然大火了 回顾2024年&#xff0c;计算机领域最大的变革应该就是大模型进一步火爆了。回顾下大模型的发展历程&#xff1a; 萌芽期&#xff1a;&#xff08;1950-2005&#xff09; 1956年&#xff1a;计算机专家约翰麦卡锡首次提出“人工智能”概念&#xff0c;标志…...

Invicti-Professional-V25.1

01 更新介绍 此更新包括对内部代理的更改。内部扫描代理的当前版本为 25.1.0。内部身份验证验证程序代理的当前版本为 25.1.0。#新功能现在&#xff0c;单击扫描摘要屏幕中的预设扫描图标会将您重定向到具有过滤视图的 “最近扫描” 页面&#xff0c;从而改进导航和对相关扫描…...

【版图设计】2025年 最新 Cadence Virtuoso IC617 虚拟机环境配置全过程 集成电路版图设计环境配置

一、Cadence Virtuoso IC617 是什么&#xff1f; Cadence Virtuoso 是一个电子设计自动化&#xff08;EDA&#xff09;工具&#xff0c;主要用于集成电路&#xff08;IC&#xff09;的设计和仿真&#xff0c;尤其是在模拟、混合信号和射频&#xff08;RF&#xff09;电路设计领…...

Python基本概念与实践

Python语言&#xff0c;总给我一种“嗯&#xff1f;还能这么玩儿&#xff1f;”的感觉 Python像一个二三十岁的年轻人&#xff0c;自由、年轻、又灵活 欢迎一起进入Python的世界~ 本人工作中经常使用Python&#xff0c;针对一些常用的语法概念进行持续记录。 目录 一、类与常…...

# [Unity] 【游戏开发】获取物体和组件的脚本方法

在Unity开发中,获取游戏物体(GameObject)及其组件(Component)是脚本编程的核心技能。本文将详细介绍如何在脚本中访问游戏物体及其组件,深入讲解常用的获取方法及优化策略,以帮助开发者高效编写Unity脚本。 1. 理解游戏物体与组件的关系 游戏物体(GameObject):Unity场…...

10 为什么系统需要引入分布式、微服务架构

java技术的发展 在java开始流行起来之后&#xff0c;主要服务于企业家应用&#xff0c;例如ERP,CRM等等&#xff0c;这些项目是为企业内部员工使用&#xff0c;我们的思维是怎么用设计模式&#xff0c;如何封装代码。让开发人员关注到业务上去&#xff0c;系统也就那么几十几百…...

大数据系列之:上传图片到cos、cos

大数据系列之&#xff1a;上传图片到cos、cos 安装python cos sdk上传图片到cos高级上传接口分页列举桶内对象cos桶之间复制cos桶之间复制图片数据 安装python cos sdk pip install -U cos-python-sdk-v5上传图片到cos # -*- codingutf-8 from qcloud_cos import CosConfig fr…...

wsl 使用 docker

直接在 wsl 安装 docker , 有可能会失败&#xff0c;可以通过在 windows 安装 Docker Desktop&#xff0c;然后连接 wsl 进行解决 注意&#xff1a; 1. 需要先安装 wsl 2. 使用时要先启动 docker Desktop, 才能在 wsl 中使用 下载&#xff1a; Docker: Accelerated Containe…...

归并延拓:LeetCode归并排序逆序对问题

前言 欢迎来到我的算法探索博客&#xff0c;在这里&#xff0c;我将通过解析精选的LeetCode题目&#xff0c;与您分享深刻的解题思路、多元化的解决方案以及宝贵的实战经验&#xff0c;旨在帮助每一位读者提升编程技能&#xff0c;领略算法之美。 &#x1f449;更多高频有趣Lee…...

51.WPF应用加图标指南 C#例子 WPF例子

完整步骤&#xff1a; 先使用文心一言生成一个图标如左边使用Windows图片编辑器编辑&#xff0c;去除背景使用正方形&#xff0c;放大图片使图标铺满图片使用格式工程转换为ico格式&#xff0c;分辨率为最大 在资源管理器中右键项目添加ico类型图片到项目里图片属性设置为始终…...

Springboot 注解缓存使用教程

Spring Boot Cache 注解使用教程 Spring Boot 提供了强大的缓存抽象,开发者可以通过注解快速实现缓存功能,从而提高系统性能。本教程将全面介绍 Spring Boot 提供的缓存相关注解及其作用,并结合示例讲解实际应用。 1. 常用缓存注解概览 Spring Boot 缓存提供以下核心注解…...

Python爬虫:从入门到实践

Python爬虫学习资料 Python爬虫学习资料 Python爬虫学习资料 在当今数字化信息爆炸的时代&#xff0c;数据已成为企业和个人发展的重要资产。Python爬虫作为一种高效获取网络数据的工具&#xff0c;正逐渐被广大开发者所熟知和应用。无论是市场调研、学术研究&#xff0c;还是…...

删除字符串中的所有相邻重复项(力扣1047)

这题也是属于栈的经典应用。为什么这样说呢&#xff1f;因为也是让我们删除相邻项。注意这里相邻项的理解&#xff0c;并不仅仅是说最开始的字符串相邻的项。在我们删除了某些相邻项后&#xff0c;会改变字符串&#xff0c;导致原本不相邻的字符变成相邻的&#xff0c;这同样属…...

MYSQL对数据的增删改查

DML 语句 对数据 进行 增、删、改 操作 插入 命令-- 插入值的个数 必须和 字段定义的个数相同 且 顺序 一致 insert into <tableName> values (val ...) ; /* 不推荐使用 */insert into <tableName>(col1 , col2 , ...) values(val1, val2 , ...) ;-- 批量插…...

x64dbg调试器完全指南:5步掌握Windows逆向工程核心技术 [特殊字符]

x64dbg调试器完全指南&#xff1a;5步掌握Windows逆向工程核心技术 &#x1f680; 【免费下载链接】x64dbg An open-source user mode debugger for Windows. Optimized for reverse engineering and malware analysis. 项目地址: https://gitcode.com/gh_mirrors/x6/x64dbg …...

最近顶级图像算法论文精读:CVPR 2025《MaIR》如何让 Mamba 更适合图像恢复?

最近顶级图像算法论文精读&#xff1a;CVPR 2025《MaIR》如何让 Mamba 更适合图像恢复&#xff1f; 摘要 最近看了一篇很值得分析的图像算法论文&#xff1a;MaIR: A Locality- and Continuity-Preserving Mamba for Image Restoration。这篇论文发表在 CVPR 2025&#xff0c;关…...

c++ 笔记(一)基础篇

c 基础知识编译与执行流程函数指针指针函数回调函数异常处理函数模板与类模板&#xff08;泛型编程&#xff09;函数模板类模板文件IO强制类型转换const_caststatic_castreinterpert_castdynamic_cast编译与执行流程 c编译过程&#xff1a; 预处理–编译–汇编–链接 预处理阶…...

SQL表连接终于讲明白了:INNER JOIN、LEFT JOIN、RIGHT JOIN 一次学透

SQL表连接终于讲明白了&#xff1a;INNER JOIN、LEFT JOIN、RIGHT JOIN 一次学透 很多人学 SQL&#xff0c;卡得最久的不是 SELECT、WHERE&#xff0c;而是表连接&#xff08;JOIN&#xff09;。这篇就不绕弯&#xff0c;直接把 SQL 表连接讲到能上手。 一、为什么一定要学会表…...

别让AI代码,变成明天的技术债障

如果有多个供应商&#xff0c;你也可以使用 [[CC-Switch]] 来可视化管理这些API key&#xff0c;以及claude code 的skills。 # 多平台安装指令 curl -fsSL https://claude.ai/install.sh | bash ## Claude Code 配置 GLM Coding Plan curl -O "https://cdn.bigmodel.cn/i…...

MES验收悖论:系统越先进,验收越难——一个食品饮料行业的隐形成本陷阱

大家好&#xff0c;我是东哥说-MES &#x1f4da; 系列文章目录 &#x1f513; 免费试读篇 - [第1篇&#xff1a;免费试读]() ✅ 可立即阅读 &#x1f512; 粉丝专享篇&#xff08;2-n篇需关注后解锁&#xff09; - [第2篇&#xff1a;进阶应用]() ⭐ 需关注 - [第…...

(学习笔记)3.11 浮点代码(3.11.4 定义和使用浮点数3.11.5 在浮点代码使用位级操作)

文章目录线索栏笔记栏1.定义和使用浮点常数1&#xff09;核心机制2&#xff09;示例分析3&#xff09;练习题3.552.在浮点代码中使用位级操作1&#xff09;指令与功能2&#xff09;标量应用3&#xff09;练习题3.56&#xff08;逆向工程位操作&#xff09;总结栏线索栏 为什么…...

基于 SpringBoot 的生活信息分享平台,从 0 到 1 完整实现(附源码 + 数据库)

&#x1f64a;作者简介&#xff1a;多年一线开发工作经验&#xff0c;原创团队&#xff0c;分享技术代码帮助学生学习&#xff0c;独立完成自己的网站项目。 代码可以查看文章末尾⬇️联系方式获取&#xff0c;记得注明来意哦~&#x1f339;赠送计算机毕业设计600个选题excel文…...

【2026奇点大会权威选型白皮书】:AI原生数据库TOP5实战对比(TPC-AI基准实测+LLM推理延迟压测数据)

第一章&#xff1a;2026奇点智能技术大会&#xff1a;AI原生数据库选型 2026奇点智能技术大会(https://ml-summit.org) 在AI原生应用爆发式增长的背景下&#xff0c;传统关系型数据库与通用NoSQL系统正面临向量检索延迟高、推理上下文管理弱、Schema动态演化难等结构性瓶颈。2…...

边缘计算语音识别实战:ARM平台深度部署方案与嵌入式AI部署指南

边缘计算语音识别实战&#xff1a;ARM平台深度部署方案与嵌入式AI部署指南 【免费下载链接】sherpa-onnx Speech-to-text, text-to-speech, speaker diarization, speech enhancement, source separation, and VAD using next-gen Kaldi with onnxruntime without Internet con…...