vue中关于confirm确认框的用法

 更新时间:2023年08月21日 10:47:15   作者:王佑辉  
这篇文章主要介绍了vue中关于confirm确认框的用法,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

vue中confirm确认框用法

示例图片

示例图1

示例代码

this.$confirm("是否确认该操作","提示",{
    iconClass: "el-icon-question",//自定义图标样式
    confirmButtonText: "确认",//确认按钮文字更换
    cancelButtonText: "取消",//取消按钮文字更换
    showClose: true,//是否显示右上角关闭按钮
    type: "warning",//提示类型  success/info/warning/error
}).then(()=>{
    //确认操作
}).then((data) => {
    //取消操作
}).catch((err) => {
  	//捕获异常
  	console.log(err);
});

vue自定义$confirm弹窗确认组件

1.Vue.extend()

使用基础 Vue 构造器,创建一个“子类”。参数是一个包含组件选项的对象

.vue单文件经过webpack打包之后是一个组件示例对象,因此可以传到Vue.extend中生成一个包含此组件的类

2.new VueComponent().$mount()

new VueComponent() 创建实例,调用$mount()可以手动编译

如果.$mount(’#app’)有参数,表示手动编译并且挂载到该元素上。

3.$el属性 类型:string | HTMLElement

手动编译后的示例对象中存在一个$el对象(dom元素),可以作为模板被插入到页面中。

4.Vue.prototype 添加 Vue 实例方法

源码

  • vue文件
<template>
<div :class="{'pop-up':true,'show':show}">
    <div class="popup-mask" v-if="hasMark"></div>
    <transition name="bottom">
        <div class="popup-note bottom">
            <div class="pop-content">
                <div class="pop-tit">
                    {{title}}
                </div>
                <p class="pop-note hasTitle">
                    <span class="msg" v-html="msg"></span>
                </p>
                <div class="btn-wrapper" v-if="type == 'alert'" @click.stop="alertClick">
                    <span class="btn btn-block yes-btn">{{alertBtnText}}</span>
                </div>
                <div class="btn-wrapper" v-if="type == 'confirm'">
                    <span @touchstart.prevent="noClick" class="btn">{{noBtnText}}</span>
                    <span @touchstart.prevent="yesClick" class="btn yes-btn">{{yesBtnText}}
            </span>
                </div>
            </div>
        </div>
    </transition>
</div>
</template>
<script>
export default {
    props: {
        title: {
            type: String,
            default: '提示'
        },
        msg: {
            type: String,
            default: ''
        },
        type: {
            type: String,
            default: 'alert'
        },
        alertBtnText: {
            type: String,
            default: '我知道了'
        },
        yesBtnText: {
            type: String,
            default: '确定'
        },
        noBtnText: {
            type: String,
            default: '取消'
        },
        hasMark: {
            type: Boolean,
            default: true
        }
    },
    data() {
        return {
            promiseStatus: null,
            show: false
        }
    },
    methods: {
        confirm() {
            let _this = this;
            this.show = true;
            return new Promise(function (resolve, reject) {
                _this.promiseStatus = {resolve, reject};
            });
        },
        noClick() {
            this.show = false;
            this.promiseStatus && this.promiseStatus.reject();
        },
        yesClick() {
            this.show = false;
            this.promiseStatus && this.promiseStatus.resolve();
        },
        alertClick() {
            this.show = false;
            this.promiseStatus && this.promiseStatus.resolve();
        }
    }
}
</script>
<style lang='less'>
@import "../../../static/less/components/tip/index.less";
</style>
  • confirm.js
import Vue from 'vue'
import message from './message.vue'
const VueComponent = Vue.extend(message);
const vm = new VueComponent().$mount();
let init = false;
let defaultOptions = {
yesBtnText: '确定',
noBtnText: '取消'
};
const confirm = function (options) {
Object.assign(vm,defaultOptions , options,{
    type:'confirm'
});
if (!init) {
    document.body.appendChild(vm.$el);
    init = true;
}
return vm.confirm();
};
export default confirm;
  • 全局注册
import confirm from './views/components/message/confirm'
Vue.prototype.$confirm = confirm;
  • 使用
this.$confirm({
    title: '',
    msg: '模式未保存,确定离开?',
    yesBtnText: "离开"
}).then(() => {
    console.log('yes')
    })
   .catch(() => {
    console.log('cancel')
});

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • el-menu修改item颜色的实现

    el-menu修改item颜色的实现

    本文主要介绍了el-menu修改item颜色的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-04-04
  • Vue3 封装扩展并简化Vuex在组件中的调用问题

    Vue3 封装扩展并简化Vuex在组件中的调用问题

    这篇文章主要介绍了Vue3 封装扩展并简化Vuex在组件中的调用,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-01-01
  • Vue Element前端应用开发之常规的JS处理函数

    Vue Element前端应用开发之常规的JS处理函数

    在我们使用Vue Element处理界面的时候,往往碰到需要利用JS集合处理的各种方法,如Filter、Map、reduce等方法,也可以涉及到一些对象属性赋值等常规的处理或者递归的处理方法,本篇随笔列出一些在VUE+Element 前端开发中经常碰到的JS处理场景,供参考学习。
    2021-05-05
  • 关于vue中的ajax请求和axios包问题

    关于vue中的ajax请求和axios包问题

    大家在vue中,经常会用到数据请求问题,常用的有vue-resourse、axios ,今天小编给大家介绍下axios的post请求 ,感兴趣的朋友跟随脚本之家小编一起看看吧
    2018-04-04
  • Element plus实现图片手动上传与回显的过程

    Element plus实现图片手动上传与回显的过程

    近期,发现点击修改,element ui 的图片没有回显到框中,所以本文给大家介绍了Element plus实现图片手动上传与回显的过程,文中通过代码示例给大家介绍的非常详细,具有一定的参考价值,需要的朋友可以参考下
    2024-09-09
  • vue2+element-ui新增编辑表格+删除行功能

    vue2+element-ui新增编辑表格+删除行功能

    这篇文章主要介绍了vue2+element-ui新增编辑表格+删除行功能,本文通过示例代码给大家介绍的非常详细,感兴趣的朋友跟随小编一起看看吧
    2024-07-07
  • 利用nginx部署vue项目的全过程

    利用nginx部署vue项目的全过程

    今天要用到服务器nginx,还需要把自己的vue的项目部署到服务器上去所以就写一下记录下来,下面这篇文章主要给大家介绍了关于利用nginx部署vue项目的相关资料,需要的朋友可以参考下
    2022-03-03
  • 解决Vue响应式数据已获取而视图不更新的问题

    解决Vue响应式数据已获取而视图不更新的问题

    这篇文章主要介绍了解决Vue响应式数据已获取而视图不更新的问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-08-08
  • 更强大的vue ssr实现预取数据的方式

    更强大的vue ssr实现预取数据的方式

    这篇文章主要介绍了更强大的 vue ssr 预取数据的方式,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-07-07
  • 详解如何制作并发布一个vue的组件的npm包

    详解如何制作并发布一个vue的组件的npm包

    这篇文章主要介绍了详解如何制作并发布一个vue的组件的npm包,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-11-11

最新评论