vue结合el-dialog 封装自己的confirm二次确认弹窗

2023-11-01

这里使用el-dialog 主要是用他的关闭动画,让关闭更加丝滑
首先在components 添加 ConfirmAlert文件夹 然后添加vue和js 文件
在这里插入图片描述
index.js

import Vue from 'vue';
import confirm from './index.vue'
let confirmConstructor = Vue.extend(confirm);
let theConfirm = function (content) {
    return new Promise((res, rej) => {
        //返回promise,ok执行resolve,调用时使用.then继续,no执行reject调用时使用catch捕捉
        let confirmDom = new confirmConstructor({
            el: document.createElement('div')
        })
        const elDiv = document.body.appendChild(confirmDom.$el); //new一个对象,然后插入body里面
        confirmDom.content = content; //为了使confirm的扩展性更强,这个采用对象的方式传入,所有的字段都可以根据需求自定义
        confirmDom.ok = function () {
            res()
            close()
        }
        confirmDom.close = function () {
            rej()
            close()
        }
        function close() {
            confirmDom.dialogVisible = false
            setTimeout(() => {
                console.log('remove');
                elDiv.remove()
            }, 1000);
        }
    })
}
export default theConfirm;

index.vue

<template>
    <div class="confirm-container">
        <el-dialog :title="content.type" :before-close="close" :visible.sync="dialogVisible" width="30%">
            <div class="confirm-content">
                <p class="msgContent">{{ content.msg }}
                </p>
                <div class="foot" slot="footer">
                    <el-button type="primary" @click.stop="close">
                        <span>{{ content.btn.no || '确认' }}</span>
                    </el-button>
                    <el-button type="primary" @click.stop="ok">
                        <span>{{ content.btn.ok || '取消' }}</span>
                    </el-button>
                </div>
            </div>
        </el-dialog>
    </div>
</template>
<script>
export default {
    data() {
        return {
            content: {
                type: '提示',
                msg: '',
                btn: {
                    ok: '确定',
                    no: '取消'
                },
            },
            dialogVisible: true
        }
    },
    methods: {
        close() {
            console.log('关闭');
        },
        ok() {
            console.log('确定')
        }
    }
}
</script>
<style scoped>
.msgContent {
    text-align: center;
}

.foot {
    width: 100%;
    display: flex;
    justify-content: center;
    margin-top: 32px;
}
</style>

main.js将alertConfirm挂载vue上

import alertConfirm from '@/components/confirmAlert'
Vue.prototype.$alertConfirm = alertConfirm;

组件中使用

<!--  -->
<template>
    <div>
        <el-button @click="btn">log</el-button>
    </div>
</template>

<script>
export default {
    data() {
        return {
        };
    },
    watch: {},
    components: {},
    computed: {},
    created() { },
    mounted() { },
    methods: {
        btn() {
            let that = this // 存储this指向
            this.$alertConfirm({
                type: '提示',
                msg: '是否删除这条信息?',
                btn: {
                    ok: '确定', no: '取消'
                },
                //msgDetail: ''
            }).then(() => {
                // 确认
                // do something
                that.logs('确认')
            }).catch(() => {
                //取消
                // do something
                that.logs('取消')
            })
        },
        logs(type) {
            console.log('调用组件的' + type);
        }
    }
}

</script>
<!-- <style scoped>
</style> -->
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

vue结合el-dialog 封装自己的confirm二次确认弹窗 的相关文章

随机推荐

  • Qt绘图控件QCustomPlot: (一)安装及使用

    一 目录 一 介绍 二 下载及配置环境 三 建立工程 四 基础画图 一 介绍 QCustomPlot是一个Qt c 小控件 用于绘图和数据可视化 它没有其它的依赖关系 并且有很好的帮助文档 这个绘图库专注于制作好看的 高质量的2D绘图 图形
  • vue(五)组件、自定义属性props

    一 组件化开发 组件化开发指的是 根据封装的思想 把页面上可重用的 UI 结构封装为组件 从而方便项目 的开发和维护 vue 是一个支持组件化开发的前端框架 vue 中规定 组件的后缀名是 vue App vue 文件 本质上就是一个 vu
  • 竞速榜实时离线对数方案演进介绍

    一 背景 竞速榜是大促期间各采销群提供的基于京东实时销售数据的排行榜 同样应对大促流量洪峰场景 通过榜单撬动品牌在京东增加资源投入 竞速榜基于用户配置规则进行实时数据计算 榜单排名在大促期间实时变化 相关排名数据在微博 朋友圈广泛传播 相关
  • android 日历开发附源码(附源码)

    这里主要记录一下在编写日历apk过程中一些主要的点 先看下效果图 一 主要功能 1 支持农历 节气 常用节假日 2 使用数据库 设置计划 二 基本结构 我们要实现的日历控件采用GestureDetector构造器 使用OnGestureLi
  • 《ImageNet Classification with Deep Convolutional Neural Networks》——AlexNet论文整理

    题目 ImageNet Classification with Deep Convolutional Neural Networks 简介 AlexNet属于一个更大更深的LeNet 改进有以下三点 增加了dropout层 丢弃层 激活函数
  • 【华为OD统一考试A卷

    华为OD统一考试A卷 B卷 新题库说明 2023年5月份 华为官方已经将的 2022 0223Q 1 2 3 4 统一修改为OD统一考试 A卷 和OD统一考试 B卷 你收到的链接上面会标注A卷还是B卷 请注意 根据反馈 目前大部分收到的都是
  • 硬盘再生器和mhdd相比_让小白变高手,硬盘维修的三大工具简单、实用

    在我们平时使用电脑中经常会遇到 系统突然奔溃 然而自己确实是什么都没干系统就坏了这让很多人摸不着头脑到底是自己弄得还是系统哪里坏了 其实不然像这种情况大多数情况下都是硬盘不稳定而导致的系统文件丢失而不能启动系统 最多情况的就是注册表丢失 开
  • 启动hbase出现Java HotSpot(TM) 64-Bit Server VM warning

    分布式hbase启动异常提醒 分布式hbase启动过程出现Java HotSpot TM 64 Bit Server VM warning提醒异常 主要是因为使用的JAVA JDK版本问题 JDK8 以上的版本不需要如下图所示的红框内的两行
  • 讲述deployment、service、ingress资源的lables关系

    在实验之前 我们都知道 lable是k8s中内部找寻各个资源的依据 比如deployment需要跟那个pod资源进行绑定 通过lable service资源如何跟pod资源进行绑定 通过lable service资源如何跟service资源
  • Fabric区块大小的实验

    首先记录已在账本的大小 见下图 大小是319784字节 修改peer的源代码 将区块写入文件时 输出新区块的大小 编译peer并替代原来的peer 重新启动节点 在终端上记录区块高度 调用智能合约的链码函数 产生一个新区块 账本大小变为32
  • Java中堆和栈创建对象的区别

    栈与堆都是Java用来在Ram中存放数据的地方 与C 不同 Java自动管理栈和堆 程序员不能直接地设置栈或堆 Java的堆是一个运行时数据区 类的对象从中分配空间 这些对象通过new newarray anewarray和multiane
  • AI2019下载Adobe Illustrator CC2019安装教程

    Illustrator 简称 AI 是一款非常强大的矢量图制图软件 在平面设计 UI设计 广告设计等诸多行业都有广泛的应用 并且作为必备软件有它的不可替代性 但很多朋友在开始安装AI软件的时候却遇到种种困难 为此 我亲自录制了安装教程 也分
  • ios开发问题记录记录

    1 提示 usr include c v1 threading support 457 11 error build Use of undeclared identifier nanosleep 原因 header search paths
  • C++ deque的总结

    deque 1 deque是什么 deque 发音类似 deck 是双端队列不规则的首字母缩写 双端队列是动态大小的序列式容器 其可以像两端进行伸缩 特定的库可以以不同的方式实现deque 但通常都是一种动态数组 不论在何种情况下 它都允许
  • npm安装两个相同的库方法

    特殊情况下一个node项目中我们需要安装两个相同的库 package json devDependencies demoA vue auto routing npm vue auto routing 1 0 1 目录名 库名 指定npm库版
  • MTU的测量方法

    MTU的测量方法 MTU是Maximum Transmission Unit的缩写 意思是网络上传送的最大数据包 MTU的单位是字节 大部分网络设备的MTU都是1500 如果本机的MTU比网关的MTU大 大的数据包就会被拆开来传送 这样会产
  • 淋巴结病理数字玻片读取与处理代码

    更多数学原理小文请关注公众号 未名方略 Whole slide images are generally stored in a multi resolution pyramid structure 首先安装openslide模块
  • 如何用魔法提示词打破 Code Interpreter 修改代码的「鬼打墙」?

    注 本文为小报童精选文章 已订阅小报童或加入知识星球 玉树芝兰 用户请勿重复付费 需求 最近我喜欢上了用 Claude 2 而不是 GPT 4 来润色文章 最主要的原因是 Claude 2 100K 的 tokens 长度 实在是优势显著
  • 21天 Jenkins打卡-Day1 环境准备

    第1天作业 1 确保自己已经有一台Linux服务器 且通过SSH客户端 SecureCRT Xshell 等都可以 链接上服务器 2 你的服务器发行版 Centos Ubuntu 等 3 在你的Linux服务器上 安装jdk8 4 验证安装
  • vue结合el-dialog 封装自己的confirm二次确认弹窗

    这里使用el dialog 主要是用他的关闭动画 让关闭更加丝滑 首先在components 添加 ConfirmAlert文件夹 然后添加vue和js 文件 index js import Vue from vue import conf