彈出模態(tài)框,常用于消息提示、消息確認、在當前頁面內完成特定的交互操作
彈出框組件支持函數(shù)調用和組件調用兩種方式
Dialog 是一個函數(shù)而不是組件,因此可以直接調用,展示對應的提示彈窗
import { Dialog } from 'vant';
Dialog({ message: '提示' });
通過組件調用 Dialog 時,可以通過下面的方式進行注冊
import Vue from 'vue';
import { Dialog } from 'vant';
// 全局注冊
Vue.use(Dialog);
// 局部注冊
export default {
components: {
[Dialog.Component.name]: Dialog.Component
}
}
用于提示一些消息,只包含一個確認按鈕
Dialog.alert({
title: '標題',
message: '彈窗內容'
}).then(() => {
// on close
});
Dialog.alert({
message: '彈窗內容'
}).then(() => {
// on close
});
用于確認消息,包含取消和確認按鈕
Dialog.confirm({
title: '標題',
message: '彈窗內容'
}).then(() => {
// on confirm
}).catch(() => {
// on cancel
});
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: '彈窗內容'
});
}
}
如果需要在彈窗內嵌入組件或其他自定義內容,可以使用組件調用的方式
<van-dialog v-model="show" title="標題" show-cancel-button>
<img src="https://img.yzcdn.cn/vant/apple-3.jpg" rel="external nofollow" >
</van-dialog>
export default {
data() {
return {
show: false
};
}
}
方法名 | 說明 | 參數(shù) | 返回值 |
---|---|---|---|
Dialog | 展示彈窗 | options | Promise |
Dialog.alert | 展示消息提示彈窗 | options | Promise |
Dialog.confirm | 展示消息確認彈窗 | options | Promise |
Dialog.setDefaultOptions | 修改默認配置,對所有 Dialog 生效 | options | void |
Dialog.resetDefaultOptions | 重置默認配置,對所有 Dialog 生效 | - | void |
Dialog.close | 關閉彈窗 | - | void |
通過函數(shù)調用 Dialog 時,支持傳入以下選項:
參數(shù) | 說明 | 類型 | 默認值 |
---|---|---|---|
title | 標題 | string | - |
width v2.2.7 | 彈窗寬度,默認單位為px | number | string | 320px |
message | 文本內容,支持通過\n 換行 | string | - |
messageAlign | 內容對齊方式,可選值為left right | string | center |
className | 自定義類名 | any | - |
showConfirmButton | 是否展示確認按鈕 | boolean | true |
showCancelButton | 是否展示取消按鈕 | boolean | false |
confirmButtonText | 確認按鈕文案 | string | 確認 |
confirmButtonColor | 確認按鈕顏色 | string | #1989fa |
cancelButtonText | 取消按鈕文案 | string | 取消 |
cancelButtonColor | 取消按鈕顏色 | string | black |
overlay | 是否展示遮罩層 | boolean | true |
overlayClass v2.2.7 | 自定義遮罩層類名 | string | - |
overlayStyle v2.2.7 | 自定義遮罩層樣式 | object | - |
closeOnPopstate v2.0.5 | 是否在頁面回退時自動關閉 | boolean | false |
closeOnClickOverlay | 是否在點擊遮罩層后關閉彈窗 | boolean | false |
lockScroll | 是否鎖定背景滾動 | boolean | true |
beforeClose | 關閉前的回調函數(shù), 調用 done() 后關閉彈窗, 調用 done(false) 阻止彈窗關閉 | (action, done) => void | - |
transition v2.2.6 | 動畫類名,等價于 transition 的name 屬性 | string | - |
getContainer | 指定掛載的節(jié)點,用法示例 | string | () => Element | body |
通過組件調用 Dialog 時,支持以下 Props:
參數(shù) | 說明 | 類型 | 默認值 |
---|---|---|---|
v-model | 是否顯示彈窗 | boolean | - |
title | 標題 | string | - |
width v2.2.7 | 彈窗寬度,默認單位為px | number | string | 320px |
message | 文本內容,支持通過\n 換行 | string | - |
message-align | 內容對齊方式,可選值為left right | string | center |
show-confirm-button | 是否展示確認按鈕 | boolean | true |
show-cancel-button | 是否展示取消按鈕 | boolean | false |
confirm-button-text | 確認按鈕文案 | string | 確認 |
confirm-button-color | 確認按鈕顏色 | string | #1989fa |
cancel-button-text | 取消按鈕文案 | string | 取消 |
cancel-button-color | 取消按鈕顏色 | string | black |
overlay | 是否展示遮罩層 | boolean | true |
overlay-class v2.2.7 | 自定義遮罩層類名 | string | - |
overlay-style v2.2.7 | 自定義遮罩層樣式 | object | - |
close-on-popstate v2.0.5 | 是否在頁面回退時自動關閉 | boolean | false |
close-on-click-overlay | 是否在點擊遮罩層后關閉彈窗 | boolean | false |
lazy-render | 是否在顯示彈層時才渲染節(jié)點 | boolean | true |
lock-scroll | 是否鎖定背景滾動 | boolean | true |
before-close | 關閉前的回調函數(shù), 調用 done() 后關閉彈窗, 調用 done(false) 阻止彈窗關閉 | (action, done) => void | - |
transition v2.2.6 | 動畫類名,等價于 transtion 的name 屬性 | string | - |
get-container | 指定掛載的節(jié)點,用法示例 | string | () => Element | - |
通過組件調用 Dialog 時,支持以下事件:
事件 | 說明 | 回調參數(shù) |
---|---|---|
confirm | 點擊確認按鈕時觸發(fā) | - |
cancel | 點擊取消按鈕時觸發(fā) | - |
open | 打開彈窗時觸發(fā) | - |
opened | 打開彈窗且動畫結束后觸發(fā) | - |
close | 關閉彈窗時觸發(fā) | - |
closed | 關閉彈窗且動畫結束后觸發(fā) | - |
通過組件調用 Dialog 時,支持以下插槽:
名稱 | 說明 |
---|---|
default | 自定義內容 |
title | 自定義標題 |
更多建議: