【Element-UI】vue使用 this.$confirm区分取消与关闭,vue给this.$confirm设置多个按钮

简介: 【Element-UI】vue使用 this.$confirm区分取消与关闭,vue给this.$confirm设置多个按钮

vue使用 this.$confirm时区分取消与右上角关闭和弹窗关闭

html代码

<template>
  <el-button type="text" @click="open">点击打开 Message Box</el-button>
</template>

js代码

<script>
  export default {
    methods: {
      open() {
        this.$confirm('检测到未保存的内容,是否在离开页面前保存修改?', '确认信息', {
          distinguishCancelAndClose: true,
          confirmButtonText: '保存',
          cancelButtonText: '放弃修改'
        })
          .then(() => {
            this.$message({
              type: 'info',
              message: '保存修改'
            });
          })
          .catch(action => {
            this.$message({
              type: 'info',
              message: action === 'cancel'
                ? '放弃保存并离开页面'
                : '停留在当前页面'
            })
          });
      }
    }
  }
</script>

全部代码

<template>
  <el-button type="text" @click="open">点击打开 Message Box</el-button>
</template>

<script>
  export default {
    methods: {
      open() {
        this.$confirm('检测到未保存的内容,是否在离开页面前保存修改?', '确认信息', {
          distinguishCancelAndClose: true,
          confirmButtonText: '保存',
          cancelButtonText: '放弃修改'
        })
          .then(() => {
            this.$message({
              type: 'info',
              message: '保存修改'
            });
          })
          .catch(action => {
            this.$message({
              type: 'info',
              message: action === 'cancel'
                ? '放弃保存并离开页面'
                : '停留在当前页面'
            })
          });
      }
    }
  }
</script>

vue给this.$confirm设置多个按钮

Vue中使用this.confirm时,虽然默认只提供了确认和取消两个按钮,但您可以通过自定义Vue.prototype上的confirm方法或者直接使用第三方UI库(如Element UI、Vuetify等)提供的API来自定义对话框,以包含更多的操作按钮。以下是一个基于Element UI的示例,展示如何在this.$confirm中设置多个操作按钮:


使用Element UI自定义确认对话框

Element UI并没有直接提供在this.$confirm中设置多个按钮的选项,但您可以使用el-dialog组件来自定义一个具有多个操作按钮的对话框。下面是一个基本示例:

HTML代码

<template>
  <el-dialog
    :title="'系统提示'"
    :visible.sync="dialogVisible"
    width="30%"
    @close="handleClose"
  >
    <p>页面内已存在正在编辑的模型</p>
    <span slot="footer" class="dialog-footer">
      <el-button @click="handleEdit">继续编辑</el-button>
      <el-button @click="handleCreateNew">创建新模型</el-button>
      <el-button @click="handleClose">关闭</el-button>
    </span>
  </el-dialog>
</template>

js代码

<script>
export default {
  data() {
    return {
      dialogVisible: false,
    };
  },
  methods: {
    // 显示自定义对话框
    showDialog() {
      this.dialogVisible = true;
    },
    // 继续编辑操作
    handleEdit() {
      this.$emit('update', { page_id: this.page_id });
      this.dialogVisible = false;
    },
    // 创建新模型操作
    handleCreateNew() {
      this.add_page();
      this.dialogVisible = false;
    },
    // 关闭对话框
    handleClose() {
      this.dialogVisible = false;
    },
  },
};
</script>

全部代码

<template>
  <el-dialog
    :title="'系统提示'"
    :visible.sync="dialogVisible"
    width="30%"
    @close="handleClose"
  >
    <p>页面内已存在正在编辑的模型</p>
    <span slot="footer" class="dialog-footer">
      <el-button @click="handleEdit">继续编辑</el-button>
      <el-button @click="handleCreateNew">创建新模型</el-button>
      <el-button @click="handleClose">关闭</el-button>
    </span>
  </el-dialog>
</template>

<script>
export default {
  data() {
    return {
      dialogVisible: false,
    };
  },
  methods: {
    // 显示自定义对话框
    showDialog() {
      this.dialogVisible = true;
    },
    // 继续编辑操作
    handleEdit() {
      this.$emit('update', { page_id: this.page_id });
      this.dialogVisible = false;
    },
    // 创建新模型操作
    handleCreateNew() {
      this.add_page();
      this.dialogVisible = false;
    },
    // 关闭对话框
    handleClose() {
      this.dialogVisible = false;
    },
  },
};
</script>
目录
相关文章
|
11天前
「Mac畅玩鸿蒙与硬件43」UI互动应用篇20 - 闪烁按钮效果
本篇将带你实现一个带有闪烁动画的按钮交互效果。通过动态改变按钮颜色,用户可以在视觉上感受到按钮的闪烁效果,提升界面互动体验。
66 19
「Mac畅玩鸿蒙与硬件43」UI互动应用篇20 - 闪烁按钮效果
|
3月前
|
JavaScript
Ant Design Vue UI框架的基础使用,及通用后台管理模板的小demo【简单】
这篇文章介绍了如何使用Ant Design Vue UI框架创建一个简单的后台管理模板,包括创建Vue项目、安装和使用ant-design-vue、以及编写后台管理通用页面的代码和样式。
Ant Design Vue UI框架的基础使用,及通用后台管理模板的小demo【简单】
|
4月前
|
JavaScript
vue element-ui 中el-message重复弹出问题解决 el-message重复弹出解决办法
vue element-ui 中el-message重复弹出问题解决 el-message重复弹出解决办法
280 49
|
2月前
|
JavaScript 索引
Vue开发中Element UI/Plus使用指南:常见问题(如Missing required prop: “value“)及中文全局组件配置解决方案
Vue开发中Element UI/Plus使用指南:常见问题(如Missing required prop: “value“)及中文全局组件配置解决方案
169 0
|
3月前
|
前端开发 图形学 开发者
【独家揭秘】那些让你的游戏瞬间鲜活起来的Unity UI动画技巧:从零开始打造动态按钮,提升玩家交互体验的绝招大公开!
【9月更文挑战第1天】在游戏开发领域,Unity 是最受欢迎的游戏引擎之一,其强大的跨平台发布能力和丰富的功能集让开发者能够迅速打造出高质量的游戏。优秀的 UI 设计对于游戏至关重要,尤其是在手游市场,出色的 UI 能给玩家留下深刻的第一印象。Unity 的 UGUI 系统提供了一整套解决方案,包括 Canvas、Image 和 Button 等组件,支持添加各种动画效果。
169 3
|
4月前
|
JavaScript 前端开发 安全
[译] 在 Vue 组件中分离 UI 和业务逻辑。
[译] 在 Vue 组件中分离 UI 和业务逻辑。
|
4月前
|
前端开发 开发者 开发框架
JSF与Bootstrap,打造梦幻响应式网页!让你的应用跨设备,让用户爱不释手!
【8月更文挑战第31天】在现代Web应用开发中,响应式设计至关重要,以确保不同设备上的良好用户体验。本文探讨了JSF(JavaServer Faces)与Bootstrap框架的结合使用,展示了如何构建响应式网页。JSF是一个基于Java的Web应用框架,提供丰富的UI组件和表单处理功能;而Bootstrap则是一个基于HTML、CSS和JavaScript的前端框架,专注于实现响应式设计。通过结合两者的优势,开发者能够更便捷地创建自适应布局,提升Web应用体验。然而,这种组合也有其局限性,如JSF组件库较小和较高的学习成本等,因此在选择开发框架时需综合考虑具体需求和应用场景。
56 0
|
4月前
|
设计模式 前端开发 开发者
Angular携手Material Design:探索设计模式下的UI组件开发之道——从按钮到对话框的全面实战演示
【8月更文挑战第31天】在现代Web应用开发中,Angular框架结合Material Design设计原则与组件库,显著提升了用户界面的质量与开发效率。本文通过具体代码示例,详细介绍如何在Angular项目中引入并使用Material Design的UI组件,包括按钮、表单和对话框等,帮助开发者快速构建美观且功能强大的应用。通过这种方式,不仅能提高开发效率,还能确保界面设计的一致性和高质量,为用户提供卓越的体验。
34 0
|
4月前
|
JavaScript 前端开发
Vue实现Element UI框架的自定义输入框或下拉框在输入时对列表选项进行过滤,以及右键列表选项弹出菜单进行删除
本文介绍了如何在Vue框架结合Element UI库实现自定义输入框或下拉框,在输入时对列表选项进行过滤,并支持右键点击列表选项弹出菜单进行删除的功能。
103 0
|
4月前
|
JavaScript 容器
Vue+Element UI
该博客文章介绍了如何在Vue中集成Element UI来构建后台管理系统的左侧菜单,包括使用`el-menu`、`el-submenu`和`el-menu-item`等组件,并通过Vue router动态构建菜单项及其路由设置。