# FxDialog 对话框
在保留当前页面状态的情况下,告知用户并承载相关操作。
# 基本用法
Dialog 弹出一个对话框,适合需要定制性更大的场景。
所有弹框层级是统一维护的,可以通过 FxUI.Utils.getPopupZIndex()获取最新 zIndex 值。
当前的zIndex:2000
这是一段信息1
这是一段信息2
这是一段信息3
这是一段信息4
这是一段信息5
这是一段信息6
这是一段信息7
这是一段信息8
这是一段信息9
这是一段信息10
这是一段信息11
这是一段信息12
这是一段信息13
这是一段信息14
这是一段信息15
这是一段信息16
这是一段信息17
这是一段信息18
这是一段信息19
这是一段信息20
这是一段信息21
这是一段信息22
这是一段信息23
这是一段信息24
这是一段信息25
这是一段信息26
这是一段信息27
这是一段信息28
这是一段信息29
这是一段信息30
这是一段信息31
这是一段信息32
这是一段信息33
这是一段信息34
这是一段信息35
这是一段信息36
这是一段信息37
这是一段信息38
这是一段信息39
这是一段信息40
这是一段信息41
这是一段信息42
这是一段信息43
这是一段信息44
这是一段信息45
这是一段信息46
这是一段信息47
这是一段信息48
这是一段信息49
这是一段信息50
这是一段信息51
这是一段信息52
这是一段信息53
这是一段信息54
这是一段信息55
这是一段信息56
这是一段信息57
这是一段信息58
这是一段信息59
这是一段信息60
这是一段信息61
这是一段信息62
这是一段信息63
这是一段信息64
这是一段信息65
这是一段信息66
这是一段信息67
这是一段信息68
这是一段信息69
这是一段信息70
这是一段信息71
这是一段信息72
这是一段信息73
这是一段信息74
这是一段信息75
这是一段信息76
这是一段信息77
这是一段信息78
这是一段信息79
这是一段信息80
这是一段信息81
这是一段信息82
这是一段信息83
这是一段信息84
这是一段信息85
这是一段信息86
这是一段信息87
这是一段信息88
这是一段信息89
这是一段信息90
这是一段信息91
这是一段信息92
这是一段信息93
这是一段信息94
这是一段信息95
这是一段信息96
这是一段信息97
这是一段信息98
这是一段信息99
这是一段信息2-1
这是一段信息2-2
这是一段信息2-3
这是一段信息2-4
这是一段信息2-5
这是一段信息2-6
这是一段信息2-7
这是一段信息2-8
这是一段信息2-9
这是一段信息2-10
这是一段信息2-11
这是一段信息2-12
这是一段信息2-13
这是一段信息2-14
这是一段信息2-15
这是一段信息2-16
这是一段信息2-17
这是一段信息2-18
这是一段信息2-19
这是一段信息2-20
这是一段信息2-21
这是一段信息2-22
这是一段信息2-23
这是一段信息2-24
这是一段信息2-25
这是一段信息2-26
这是一段信息2-27
这是一段信息2-28
这是一段信息2-29
这是一段信息2-30
这是一段信息2-31
这是一段信息2-32
这是一段信息2-33
这是一段信息2-34
这是一段信息2-35
这是一段信息2-36
这是一段信息2-37
这是一段信息2-38
这是一段信息2-39
这是一段信息2-40
这是一段信息2-41
这是一段信息2-42
这是一段信息2-43
这是一段信息2-44
这是一段信息2-45
这是一段信息2-46
这是一段信息2-47
这是一段信息2-48
这是一段信息2-49
这是一段信息2-50
这是一段信息2-51
这是一段信息2-52
这是一段信息2-53
这是一段信息2-54
这是一段信息2-55
这是一段信息2-56
这是一段信息2-57
这是一段信息2-58
这是一段信息2-59
这是一段信息2-60
这是一段信息2-61
这是一段信息2-62
这是一段信息2-63
这是一段信息2-64
这是一段信息2-65
这是一段信息2-66
这是一段信息2-67
这是一段信息2-68
这是一段信息2-69
这是一段信息2-70
这是一段信息2-71
这是一段信息2-72
这是一段信息2-73
这是一段信息2-74
这是一段信息2-75
这是一段信息2-76
这是一段信息2-77
这是一段信息2-78
这是一段信息2-79
这是一段信息2-80
这是一段信息2-81
这是一段信息2-82
这是一段信息2-83
这是一段信息2-84
这是一段信息2-85
这是一段信息2-86
这是一段信息2-87
这是一段信息2-88
这是一段信息2-89
这是一段信息2-90
这是一段信息2-91
这是一段信息2-92
这是一段信息2-93
这是一段信息2-94
这是一段信息2-95
这是一段信息2-96
这是一段信息2-97
这是一段信息2-98
这是一段信息2-99
这是一段信息4-1
这是一段信息4-2
这是一段信息4-3
这是一段信息4-4
这是一段信息4-5
这是一段信息4-6
这是一段信息4-7
这是一段信息4-8
这是一段信息4-9
这是一段信息4-10
这是一段信息4-11
这是一段信息4-12
这是一段信息4-13
这是一段信息4-14
这是一段信息4-15
这是一段信息4-16
这是一段信息4-17
这是一段信息4-18
这是一段信息4-19
这是一段信息4-20
这是一段信息4-21
这是一段信息4-22
这是一段信息4-23
这是一段信息4-24
这是一段信息4-25
这是一段信息4-26
这是一段信息4-27
这是一段信息4-28
这是一段信息4-29
这是一段信息4-30
这是一段信息4-31
这是一段信息4-32
这是一段信息4-33
这是一段信息4-34
这是一段信息4-35
这是一段信息4-36
这是一段信息4-37
这是一段信息4-38
这是一段信息4-39
这是一段信息4-40
这是一段信息4-41
这是一段信息4-42
这是一段信息4-43
这是一段信息4-44
这是一段信息4-45
这是一段信息4-46
这是一段信息4-47
这是一段信息4-48
这是一段信息4-49
这是一段信息4-50
这是一段信息4-51
这是一段信息4-52
这是一段信息4-53
这是一段信息4-54
这是一段信息4-55
这是一段信息4-56
这是一段信息4-57
这是一段信息4-58
这是一段信息4-59
这是一段信息4-60
这是一段信息4-61
这是一段信息4-62
这是一段信息4-63
这是一段信息4-64
这是一段信息4-65
这是一段信息4-66
这是一段信息4-67
这是一段信息4-68
这是一段信息4-69
这是一段信息4-70
这是一段信息4-71
这是一段信息4-72
这是一段信息4-73
这是一段信息4-74
这是一段信息4-75
这是一段信息4-76
这是一段信息4-77
这是一段信息4-78
这是一段信息4-79
这是一段信息4-80
这是一段信息4-81
这是一段信息4-82
这是一段信息4-83
这是一段信息4-84
这是一段信息4-85
这是一段信息4-86
这是一段信息4-87
这是一段信息4-88
这是一段信息4-89
这是一段信息4-90
这是一段信息4-91
这是一段信息4-92
这是一段信息4-93
这是一段信息4-94
这是一段信息4-95
这是一段信息4-96
这是一段信息4-97
这是一段信息4-98
这是一段信息4-99
这是一段信息5
这是一段信息5
这是一段信息5
复制代码
TIP
before-close
仅当用户通过点击关闭图标或遮罩关闭 Dialog 时起效。如果您在 footer
具名 slot 里添加了用于关闭 Dialog 的按钮,那么可以在按钮的点击回调函数里加入 before-close
的相关逻辑。
# 侧滑框
复制代码
# 自定义内容
Dialog 组件的内容可以是任意的,甚至可以是表格或表单,下面是应用了 Element Table 和 Form 组件的两个样例。
复制代码
# 嵌套的 Dialog
如果需要在一个 Dialog 内部嵌套另一个 Dialog,需要使用 append-to-body
属性。
复制代码
# 居中布局
标题和底部可水平居中
复制代码
TIP
Dialog 的内容是懒渲染的,即在第一次被打开之前,传入的默认 slot 不会被渲染到 DOM 上。因此,如果需要执行 DOM 操作,或通过 ref
获取相应组件,请在 open
事件回调中进行。
TIP
如果 visible
属性绑定的变量位于 Vuex 的 store 内,那么 .sync
不会正常工作。此时需要去除 .sync
修饰符,同时监听 Dialog 的 open
和 close
事件,在事件回调中执行 Vuex 中对应的 mutation 更新 visible
属性绑定的变量的值。
# Attributes
参数 | 说明 | 类型 | 可选值 | 默认值 | PC/移动端支持情况 |
---|---|---|---|---|---|
visible/v-model | 是否显示 Dialog,支持 .sync 修饰符 | boolean | — | false | PC端仅支持visible/移动端仅支持v-model |
title | Dialog 的标题,也可通过具名 slot (见下表)传入 | string | — | — | 仅PC |
width | Dialog 的宽度 | string | — | 50% | 仅PC |
max-height | Dialog 的 body 部分的最高宽度,如“200px” | string | — | - | 仅PC |
fullscreen | 是否为全屏 Dialog | boolean | — | false | 仅PC |
modal | 是否需要遮罩层 | boolean | — | true | PC/移动端 |
modal-append-to-body | 遮罩层是否插入至 body 元素上,若为 false,则遮罩层会插入至 Dialog 的父元素上 | boolean | — | true | 仅PC |
append-to-body | Dialog 自身是否插入至 body 元素上。嵌套的 Dialog 必须指定该属性并赋值为 true | boolean | — | false | 仅PC |
lock-scroll | 是否在 Dialog 出现时将 body 滚动锁定 | boolean | — | true | 仅PC |
custom-class | Dialog 的自定义类名 | string | — | — | PC/移动端 |
close-on-press-escape | 是否可以通过按下 ESC 关闭 Dialog | boolean | — | true | 仅PC |
show-close | 是否显示关闭按钮,前提是 title 不为空或有等于 header 的插槽 | boolean | — | true | 仅PC |
before-close | 关闭前的回调,会暂停 Dialog 的关闭 | function(done),done 用于关闭 Dialog | — | — | PC/移动端 |
center | 是否对头部和底部采用居中布局 | boolean | — | false | 仅PC |
autoClose | 是否自动关闭 | boolean | — | - | 仅PC |
duration | 自动关闭的延迟时间,单位:ms | number | — | 3000 | 仅PC |
sliderPanel | 是否是侧滑窗口,默认宽度为屏幕 50% | boolean | — | false | 仅PC |
close-on-click-outside | sliderPanel 为 true 时,是否可以通过点击 Dialog 之外的区域关闭 dialog | boolean | — | true | PC/移动端 |
transition | 动画模式 | String | fade/ slide/ scale/ shrink | fade | 仅移动端 |
remove-modal | 是否移除蒙层DOM | Boolean | - | false | 仅移动端 |
close-when-popstate | 监听popstate事件,当路由切换时关闭popup及modal | Boolean | - | true | 仅移动端 |
# Slot
name | 说明 | PC/移动端支持情况 |
---|---|---|
— | Dialog 的内容 | PC/移动端 |
title | Dialog 标题区的内容 | 仅PC |
footer | Dialog 按钮操作区的内容 | 仅PC |
# Methods
方法名 | 说明 | 参数 | PC/移动端支持情况 |
---|---|---|---|
caculatePosition | 重新计算 dialog 位置。当内容有变化时,可用。 | — | 仅PC |
# Events
事件名称 | 说明 | 回调参数 | PC/移动端支持情况 |
---|---|---|---|
open | Dialog 打开的回调 | — | 仅PC |
opened | Dialog 打开动画结束时的回调 | — | 仅PC |
close | Dialog 关闭的回调 | — | 仅PC |
closed | Dialog 关闭动画结束时的回调 | — | PC/移动端 |
update:visible | visible 更新时的回调 | — | 仅PC |
click-modal | 点击蒙层时触发 | — | 仅移动端 |