介绍
弹出模态框,常用于消息提示、消息确认,或在当前页面内完成特定的交互操作。
弹出框组件支持函数调用和组件调用两种方式。
函数调用
Dialog 是一个函数,调用后会直接在页面中弹出相应的模态框。
import { Dialog } from 'vant';Dialog({ message: '提示' });
组件调用
通过组件调用 Dialog 时,可以通过下面的方式进行注册:
import Vue from 'vue';import { Dialog } from 'vant';// 全局注册Vue.use(Dialog);// 局部注册export default { components: { [ponent.name]: ponent, },};
代码演示
消息提示
用于提示一些消息,只包含一个确认按钮。
Dialog.alert({ title: '标题', message: '弹窗内容',}).then(() => { // on close});Dialog.alert({ message: '弹窗内容',}).then(() => { // on close});
消息确认
用于确认消息,包含取消和确认按钮。
Dialog.confirm({ title: '标题', message: '弹窗内容',}) .then(() => { // on confirm }) .catch(() => { // on cancel });
异步关闭
通过 beforeClose 属性可以传入一个回调函数,在弹窗关闭前进行特定操作。
function beforeClose(action, done) { if (action === 'confirm') { setTimeout(done, 1000); } else { done(); }}Dialog.confirm({ title: '标题', message: '弹窗内容', beforeClose,});
全局方法
引入 Dialog 组件后,会自动在 Vue 的 prototype 上挂载 $dialog 方法,在所有组件内部都可以直接调用此方法。
export default { mounted() { this.$dialog.alert({message: '弹窗内容', }); },};
组件调用
如果需要在弹窗内嵌入组件或其他自定义内容,可以使用组件调用的方式。
export default { data() { return {show: false, }; },};
API
方法
方法名说明参数返回值Dialog展示弹窗optionsPromiseDialog.alert展示消息提示弹窗optionsPromiseDialog.confirm展示消息确认弹窗optionsPromiseDialog.setDefaultOptions修改默认配置,对所有 Dialog 生效optionsvoidDialog.resetDefaultOptions重置默认配置,对所有 Dialog 生效-voidDialog.close关闭弹窗-void
Options
通过函数调用 Dialog 时,支持传入以下选项:
参数说明类型默认值title标题string-width v2.2.7弹窗宽度,默认单位为pxnumber | string320pxmessage文本内容,支持通过换行string-messageAlign内容对齐方式,可选值为left rightstringcenterclassName自定义类名any-showConfirmButton是否展示确认按钮booleantrueshowCancelButton是否展示取消按钮booleanfalseconfirmButtonText确认按钮文案string确认confirmButtonColor确认按钮颜色string#1989facancelButtonText取消按钮文案string取消cancelButtonColor取消按钮颜色stringblackoverlay是否展示遮罩层booleantrueoverlayClass v2.2.7自定义遮罩层类名string-overlayStyle v2.2.7自定义遮罩层样式object-closeOnPopstate v2.0.5是否在页面回退时自动关闭booleanfalsecloseOnClickOverlay是否在点击遮罩层后关闭弹窗booleanfalselockScroll是否锁定背景滚动booleantrueallowHtml v2.8.7是否允许 message 内容中渲染 HTMLbooleantruebeforeClose关闭前的回调函数,
调用 done() 后关闭弹窗,
调用 done(false) 阻止弹窗关闭(action, done) => void-transition v2.2.6动画类名,等价于 transtion 的name属性string-getContainer指定挂载的节点,用法示例string | () => Elementbody
Props
通过组件调用 Dialog 时,支持以下 Props:
参数说明类型默认值v-model是否显示弹窗boolean-title标题string-width v2.2.7弹窗宽度,默认单位为pxnumber | string320pxmessage文本内容,支持通过换行string-message-align内容对齐方式,可选值为left rightstringcentershow-confirm-button是否展示确认按钮booleantrueshow-cancel-button是否展示取消按钮booleanfalseconfirm-button-text确认按钮文案string确认confirm-button-color确认按钮颜色string#1989facancel-button-text取消按钮文案string取消cancel-button-color取消按钮颜色stringblackoverlay是否展示遮罩层booleantrueoverlay-class v2.2.7自定义遮罩层类名string-overlay-style v2.2.7自定义遮罩层样式object-close-on-popstate v2.0.5是否在页面回退时自动关闭booleanfalseclose-on-click-overlay是否在点击遮罩层后关闭弹窗booleanfalselazy-render是否在显示弹层时才渲染节点booleantruelock-scroll是否锁定背景滚动booleantrueallow-html v2.8.7是否允许 message 内容中渲染 HTMLbooleantruebefore-close关闭前的回调函数,
调用 done() 后关闭弹窗,
调用 done(false) 阻止弹窗关闭(action, done) => void-transition v2.2.6动画类名,等价于 transtion 的name属性string-get-container指定挂载的节点,用法示例string | () => Element-
Events
通过组件调用 Dialog 时,支持以下事件:
事件说明回调参数confirm点击确认按钮时触发-cancel点击取消按钮时触发-open打开弹窗时触发-close关闭弹窗时触发-opened打开弹窗且动画结束后触发-closed关闭弹窗且动画结束后触发-
Slots
通过组件调用 Dialog 时,支持以下插槽:
名称说明default自定义内容title自定义标题