脚本之家 服务器常用软件
  • 手机版
  • 关注微信
    扫一扫

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')
});

总结

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

您可能感兴趣的文章:
  • Ant Design Vue全局对话确认框(confirm)的回调不触发
  • Vue给 elementUI 中的 this.$confirm、this.$alert、 this.$prompt添加按钮加载效果
  • vue element插件this.$confirm用法及说明(取消也可以发请求)
  • Vue ElementUI this.$confirm async await封装方式
  • vue+el使用this.$confirm,不能阻断代码往下执行的解决
  • vue
  • confirm
  • 确认框

相关文章

  • Vue3中的shallowRef 和shallowReactive对比分析

    Vue3中的shallowRef 和shallowReactive对比分析

    这篇文章主要介绍了Vue3中的shallowRef 和shallowReactive,通过示例代码逐一对他们的使用做的详细介绍,文末补充介绍了vue3的shallowRef()、shallowReactive()和shallowReadonly()的使用,需要的朋友可以参考下
    2023-01-01
  • 浅谈Vue.js应用的四种AJAX请求数据模式

    浅谈Vue.js应用的四种AJAX请求数据模式

    本篇文章主要介绍了浅谈Vue.js应用的四种AJAX请求数据模式,本文将详细介绍在Vue应用程序中实现AJAX的四个方法,有兴趣的可以了解一下
    2017-08-08
  • vue+elementui 实现新增和修改共用一个弹框的完整代码

    vue+elementui 实现新增和修改共用一个弹框的完整代码

    Element-Ul是饿了么前端团队推出的一款基于Vue.js 2.0 的桌面端UI框架,手机端有对应框架是Mint UI ,今天给大家普及vue+elementui 实现新增和修改共用一个弹框的完整代码,一起看看吧
    2021-06-06
  • vue组件中使用props传递数据的实例详解

    vue组件中使用props传递数据的实例详解

    这篇文章主要介绍了vue组件中使用props传递数据的实例详解,非常不错,具有参考借鉴价值,需要的朋友可以参考下
    2018-04-04
  • 详解vue-cli3多环境打包配置

    详解vue-cli3多环境打包配置

    这篇文章主要介绍了vue-cli3多环境打包配置,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-03-03
  • Vue自动化注册全局组件脚本分享

    Vue自动化注册全局组件脚本分享

    这篇文章主要介绍了Vue自动化注册全局组件脚本,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-03-03
  • npm run dev失败的简单解决办法

    npm run dev失败的简单解决办法

    最近工作中遇到了npm run dev报错这个问题,通过查找相关资料最终解决了,所以下面这篇文章主要给大家介绍了关于npm run dev失败的详细解决办法,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2022-07-07
  • Vue分页器实现原理详解

    Vue分页器实现原理详解

    这篇文章主要为大家详细介绍了Vue分页器实现原理,编写了分页器组件,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-06-06
  • elementui的el-popover修改样式不生效的解决

    elementui的el-popover修改样式不生效的解决

    在使用element-ui的时候,有一个常用的组件,那就是el-popover,本文就介绍一下elementui的el-popover修改样式不生效的解决方法,感兴趣的可以了解一下
    2021-06-06
  • 基于Vue3实现旋转木马动画效果

    基于Vue3实现旋转木马动画效果

    这篇文章主要为大家介绍了如何利用Vue3实现旋转木马的动画效果,文中的示例代码讲解详细,对我们学习Vue有一定的帮助,需要的可以参考一下
    2022-05-05

最新评论

玻璃钢生产厂家四川超市商场美陈销售企业无锡人物玻璃钢雕塑公司长春市商场美陈新余步行街玻璃钢雕塑价位张掖人物玻璃钢雕塑哪家好邢台玻璃钢商场美陈商场美陈座椅材质静安区进口玻璃钢雕塑销售价格花朵校园玻璃钢雕塑定制厂家卡通雕塑牛玻璃钢雕塑南充玻璃钢动物雕塑商场美陈报道有什么好的玻璃钢人物雕塑山东超市商场美陈订购郑州玻璃钢雕塑品牌便宜玻璃钢雕塑厂家信息推荐广东步行街玻璃钢雕塑制作璧山区玻璃钢雕塑玻璃钢仿铜人物雕塑品牌景洪玻璃钢动物雕塑山西省玻璃钢雕塑生产厂家商场临街门店美陈管理制度伊春玻璃钢雕塑定做湖北步行街玻璃钢雕塑福建特色商场美陈现价革命主题玻璃钢雕塑量大从优南京创意玻璃钢雕塑宁波玻璃钢仿铜雕塑定制商场美陈吊点安装公司杭州玻璃钢花盆香港通过《维护国家安全条例》两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”19岁小伙救下5人后溺亡 多方发声单亲妈妈陷入热恋 14岁儿子报警汪小菲曝离婚始末遭遇山火的松茸之乡雅江山火三名扑火人员牺牲系谣言何赛飞追着代拍打萧美琴窜访捷克 外交部回应卫健委通报少年有偿捐血浆16次猝死手机成瘾是影响睡眠质量重要因素高校汽车撞人致3死16伤 司机系学生315晚会后胖东来又人满为患了小米汽车超级工厂正式揭幕中国拥有亿元资产的家庭达13.3万户周杰伦一审败诉网易男孩8年未见母亲被告知被遗忘许家印被限制高消费饲养员用铁锨驱打大熊猫被辞退男子被猫抓伤后确诊“猫抓病”特朗普无法缴纳4.54亿美元罚金倪萍分享减重40斤方法联合利华开始重组张家界的山上“长”满了韩国人?张立群任西安交通大学校长杨倩无缘巴黎奥运“重生之我在北大当嫡校长”黑马情侣提车了专访95后高颜值猪保姆考生莫言也上北大硕士复试名单了网友洛杉矶偶遇贾玲专家建议不必谈骨泥色变沉迷短剧的人就像掉进了杀猪盘奥巴马现身唐宁街 黑色着装引猜测七年后宇文玥被薅头发捞上岸事业单位女子向同事水杯投不明物质凯特王妃现身!外出购物视频曝光河南驻马店通报西平中学跳楼事件王树国卸任西安交大校长 师生送别恒大被罚41.75亿到底怎么缴男子被流浪猫绊倒 投喂者赔24万房客欠租失踪 房东直发愁西双版纳热带植物园回应蜉蝣大爆发钱人豪晒法院裁定实锤抄袭外国人感慨凌晨的中国很安全胖东来员工每周单休无小长假白宫:哈马斯三号人物被杀测试车高速逃费 小米:已补缴老人退休金被冒领16年 金额超20万

玻璃钢生产厂家 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化