Dialog 对话框
# Dialog 对话框
在保留当前页面状态的情况下,告知用户并承载相关操作。
# 基本用法
Dialog 弹出一个对话框,适合需要定制性更大的场景。
复制代码
before-close
仅当用户通过点击关闭图标或遮罩关闭 Dialog 时起效。如果你在 footer
具名 slot 里添加了用于关闭 Dialog 的按钮,那么可以在按钮的点击回调函数里加入 before-close
的相关逻辑。
# 自定义内容
Dialog 组件的内容可以是任意的,甚至可以是表格,下面是应用了 Element Table 组件的样例。
复制代码
# 嵌套的 Dialog
如果需要在一个 Dialog 内部嵌套另一个 Dialog,需要使用 append-to-body
属性。
复制代码
# 居中布局
标题和底部可水平居中
复制代码
center
仅影响标题和底部区域。Dialog 的内容是任意的,在一些情况下,内容并不适合居中布局。如果需要内容也水平居中,请自行为其添加 CSS。
如果 visible
属性绑定的变量位于 Vuex 的 store 内,那么 .sync
不会正常工作。此时需要去除 .sync
修饰符,同时监听 Dialog 的 show
和 hide
事件,在事件回调中执行 Vuex 中对应的 mutation 更新 visible
属性绑定的变量的值。
# 局部的Dialog
可以让Dialog和遮罩层打开在指定的dom节点上,需要使用target属性
复制代码
传一个target用来指定它们加在哪个dom上, 加高度是为了撑起来当前的div
# 最小化Dialog
可以最小化的dialog
复制代码
# 可拖拽的Dialog
可以进行拖拽的dialog
复制代码
# 没有模态的Dialog
没有遮罩层的dialog
复制代码
# 注册dialog回调方法
this.$aui.dialog.register({
type: 'show',
host: this, // 可选
fn: function(dialogComponent) {
// todo
}
});
# 全局方法
全局方法:this.$aui.dialog.show 调用参数为:options
$aui.dialog.show(options)
$aui.dialog.hide()
// 引入组件
import App from './App'
// 打开dialog
const h = this.$createElement;
this.$aui.dialog.show({
title:"dialog title", // title
content:h(App), // dialog中内容 必填项
instance:this, // 父页面的vue实例 必填项
isFocus:true // 激活dialog中的焦点控制 必填项
importData:{
// 传入App.vue页面的数据
aaa:'123',
bbb:'456'
}
});
// 关闭dialog
this.$aui.dialog.hide()
# Attributes
参数 | 说明 | 类型 | 可选值 | 默认值 |
---|---|---|---|---|
visible | 是否显示 Dialog,支持 .sync 修饰符 | boolean | — | false |
show-minus | 是否显示最小化 | boolean | — | false |
show-full-icon | 是否显示全屏图标 | boolean | — | false |
title | Dialog 的标题,也可通过具名 slot (见下表)传入 | string | — | — |
fullscreen | 是否为全屏 Dialog | boolean | — | false |
close-on-click-modal | 是否可以通过点击 modal 关闭 Dialog | boolean | — | false |
close-on-press-escape | 是否可以通过按下 ESC 关闭 Dialog | boolean | — | true |
show-close | 是否显示关闭按钮 | boolean | — | true |
before-close | 关闭前的回调,会暂停 Dialog 的关闭 | function(done),done 用于关闭 Dialog | — | — |
center | 是否对头部和底部采用居中布局 | boolean | — | false |
dialog-drag | 可拖动头部 | boolean | — | false |
is-focus | 是否需要焦点控制 | boolean | ||
target | 将dialog和遮罩层加在传入的dom元素上 | HTMLDivElement | ||
is-modal | 设置dialog的模态与非模态 | boolean | — | true |
custom-class | 设置class样式(传值为'class1'或者['class1','class2']) | string/array | — | " " |
custom-style | 设置style样式(优先级很高,请谨慎使用) | object | — | null |
# Slot
name | 说明 |
---|---|
— | Dialog 的内容 |
title | Dialog 标题区的内容 |
footer | Dialog 按钮操作区的内容 |
# Events
事件名称 | 说明 | 回调参数 |
---|---|---|
hide | Dialog 关闭的回调 | — |
show | Dialog 打开的回调 | — |
maximum | 点击最大化按钮的回调 | — |