Skip to content

Dialog 对话框

对话框组件用于在不离开当前页面的情况下,显示需要用户进行操作的内容。通常用于确认信息、警告提示、展示表单等场景。

参数

Props

名称类型默认值描述
visiblebooleanfalse是否显示对话框
appendTostring | HTMLElementbody对话框挂载的节点
escbooleantrue是否按下ESC键关闭对话框
lockScrollbooleantrue是否在对话框显示时锁定页面滚动
maskbooleantrue是否显示遮罩层
maskClosablebooleantrue是否点击遮罩层关闭对话框
fullscreenbooleanfalse是否全屏显示
zIndexnumber4000对话框的层级
transitionNameTransitionNamefalse-
titlestring-对话框标题
widthstring | number500px对话框宽度
showClosebooleantrue是否显示关闭按钮
topstring | number15vh对话框距离顶部的距离
centerbooleanfalse是否对头部和底部采用居中布局
verticalVerticalAligntop垂直对齐方式
bodyHeightstringnumber-
showFooterbooleantrue是否显示底部区域
customClassstring-自定义类名

Slots

名称描述参数
default对话框内容-
title对话框标题区内容-
footer对话框底部内容-

Events

名称描述参数
show对话框打开时触发-
shown对话框打开动画结束时触发-
hide对话框关闭时触发-
hidden对话框关闭动画结束时触发-
cancel对话框取消时触发-
confirm对话框确认时触发-
update:visible对话框显示状态变化时触发(value: boolean) => void

示例

基础用法

通过控制 v-model 属性来显示/隐藏对话框。

全屏对话框

通过设置 fullscreen 属性可以让对话框全屏显示。

自定义宽度

通过设置 width 属性可以自定义对话框的宽度。

内容高度过长

当内容高度超过对话框默认高度时,可以通过设置 body-height 属性来控制内容区域高度。

子对话框

对话框可以嵌套使用,创建多层对话框。

命令式创建

除了使用组件方式创建对话框外,还可以通过 JavaScript 命令式创建。

TypeScript

ts
// 动画名称
export type TransitionName =
  | "x-fade"
  | "x-zoom"
  | "x-slide"
  | "x-slide-up"
  | "x-slide-down"
  | "x-slide-left"
  | "x-slide-right";

export type VerticalAlign = "top" | "bottom" | "center";

命令式创建声明

ts

export interface DialogOptions extends Partial<DialogProps> {
  /**
   * 传递给内容组件的 props
   */
  componentProps?: Record<string, any>;
}

export interface DialogInstance {
  /**
   * 关闭对话框
   */
  close: (value?: any) => void;
  /**
   * 更新对话框属性
   */
  update: (options: DialogOptions) => void;
}

export type DialogReturn = Promise<any> & {
  /**
   * 对话框实例
   */
  instance: DialogInstance;
};