Dialog 对话框

模态对话框,在浮层中显示,引导用户进行相关操作。

使用指南

在 page.json 中引入组件

  1. {
  2. "navigationBarTitleText": "Dialog",
  3. "usingComponents": {
  4. "wux-button": "../../dist/button/index",
  5. "wux-dialog": "../../dist/dialog/index"
  6. }
  7. }

示例

!> 该组件主要依靠 JavaScript 主动调用,所以一般只需在 wxml 中添加一个组件,并设置 id 为 #wux-dialog 或其他,之后在 page.js 中调用 $wuxDialog(id) 获取匹配到的第一个组件实例对象。

  1. <wux-dialog id="wux-dialog" />
  2. <wux-dialog id="wux-dialog--alert" />
  3. <view class="page">
  4. <view class="page__hd">
  5. <view class="page__title">Dialog</view>
  6. <view class="page__desc">对话框</view>
  7. </view>
  8. <view class="page__bd page__bd_spacing">
  9. <wux-button block type="light" bind:click="open">Default Dialog</wux-button>
  10. <wux-button block type="light" bind:click="confirm">Confirm Dialog</wux-button>
  11. <wux-button block type="light" bind:click="alert">Alert Dialog</wux-button>
  12. <wux-button block type="light" bind:click="prompt">Prompt Dialog</wux-button>
  13. <wux-button block type="light" bind:click="custom">Custom Dialog</wux-button>
  14. <wux-button block type="light" bind:click="vertical">Vertical Buttons Dialog</wux-button>
  15. </view>
  16. </view>
  1. import { $wuxDialog } from '../../dist/index'
  2. Page({
  3. data: {},
  4. onLoad() {},
  5. open() {
  6. if (this.timeout) clearTimeout(this.timeout)
  7. const hideDialog = $wuxDialog().open({
  8. resetOnClose: true,
  9. title: '三秒后自动关闭',
  10. content: '弹窗内容,告知当前状态、信息和解决方法,描述文字尽量控制在三行内',
  11. buttons: [{
  12. text: '取消',
  13. },
  14. {
  15. text: '确定',
  16. type: 'primary',
  17. onTap(e) {
  18. console.log(e)
  19. },
  20. },
  21. ],
  22. })
  23. this.timeout = setTimeout(hideDialog, 3000)
  24. },
  25. confirm() {
  26. $wuxDialog().confirm({
  27. resetOnClose: true,
  28. closable: true,
  29. title: '定制冰激凌',
  30. content: '你确定要吃我的冰淇淋吗?',
  31. onConfirm(e) {
  32. console.log('凭什么吃我的冰淇淋!')
  33. },
  34. onCancel(e) {
  35. console.log('谢谢你不吃之恩!')
  36. },
  37. })
  38. },
  39. alert() {
  40. $wuxDialog().alert({
  41. resetOnClose: true,
  42. title: '不要吃果冻',
  43. content: '它们可能是用旧的皮鞋帮做的!',
  44. onConfirm(e) {
  45. console.log('感谢上帝,你没吃鞋帮!')
  46. },
  47. })
  48. },
  49. prompt() {
  50. const alert = (content) => {
  51. $wuxDialog('#wux-dialog--alert').alert({
  52. resetOnClose: true,
  53. title: '提示',
  54. content: content,
  55. })
  56. }
  57. $wuxDialog().prompt({
  58. resetOnClose: true,
  59. title: '提示',
  60. content: '密码为8位数字',
  61. fieldtype: 'number',
  62. password: !0,
  63. defaultText: '',
  64. placeholder: '请输入Wi-Fi密码',
  65. maxlength: 8,
  66. onConfirm(e, response) {
  67. const content = response.length === 8 ? `Wi-Fi密码到手了: ${response}` : `请输入正确的Wi-Fi密码`
  68. alert(content)
  69. },
  70. })
  71. },
  72. custom() {
  73. const alert = (content) => {
  74. $wuxDialog('#wux-dialog--alert').alert({
  75. resetOnClose: true,
  76. title: '提示',
  77. content: content,
  78. })
  79. }
  80. $wuxDialog().open({
  81. resetOnClose: true,
  82. title: '我是标题',
  83. content: '我是自定义的对话框!',
  84. buttons: [{
  85. text: '现金支付',
  86. type: 'primary',
  87. onTap(e) {
  88. alert('你选择了现金支付!')
  89. },
  90. },
  91. {
  92. text: '微信支付',
  93. type: 'primary',
  94. onTap(e) {
  95. alert('你选择了微信支付!')
  96. },
  97. },
  98. {
  99. text: '取消',
  100. },
  101. ],
  102. })
  103. },
  104. vertical() {
  105. $wuxDialog().open({
  106. resetOnClose: true,
  107. title: '请问需要反馈什么问题?',
  108. content: '你也可以在个人页的反馈帮助中心里找到这个功能',
  109. verticalButtons: !0,
  110. buttons: [{
  111. text: '遇到问题',
  112. bold: !0,
  113. },
  114. {
  115. text: '意见建议',
  116. bold: !0,
  117. },
  118. {
  119. text: '没啥事',
  120. bold: !0,
  121. },
  122. ],
  123. })
  124. },
  125. })

视频演示

Dialog

API

Dialog.open

参数 类型 描述 默认值
options object 配置项 -
options.prefixCls string 自定义类名前缀 wux-dialog
options.title string 提示标题 -
options.content string 提示文本 -
options.verticalButtons boolean 是否显示垂直按钮布局 false
options.resetOnClose boolean 组件关闭时重置其内部数据 false
options.closable boolean 是否显示关闭按钮 false
options.mask boolean 是否显示蒙层 true
options.maskClosable boolean 点击蒙层是否允许关闭 true
options.zIndex number 设置蒙层的 z-index 1000
options.buttons array 按钮 []
options.buttons[].text string 按钮的文本 -
options.buttons[].type string 按钮的类型,可选值为 default、primary -
options.buttons[].bold boolean 是否加粗按钮的文字 -
options.buttons[].onTap function 按钮的点击事件 -

Dialog.alert

参数 类型 描述 默认值
options object 配置项 -
options.prefixCls string 自定义类名前缀 wux-dialog
options.title string 提示标题 -
options.content string 提示文本 -
options.confirmText string 确定按钮的文字 确定
options.confirmType string 确定按钮的类型 primary
options.onConfirm function 确定按钮的点击事件 -

Dialog.confirm

参数 类型 描述 默认值
options object 配置项 -
options.prefixCls string 自定义类名前缀 wux-dialog
options.title string 提示标题 -
options.content string 提示文本 -
options.confirmText string 确定按钮的文字 确定
options.confirmType string 确定按钮的类型 primary
options.onConfirm function 确定按钮的点击事件 -
options.cancelText string 取消按钮的文字 取消
options.cancelType string 取消按钮的类型 default
options.onCancel function 取消按钮的点击事件 -

Dialog.prompt

参数 类型 描述 默认值
options object 配置项 -
options.prefixCls string 自定义类名前缀 wux-dialog
options.title string 提示标题 -
options.content string 提示文本 -
options.fieldtype string input 的类型,可选值为 text、number、idcard、digit text
options.password boolean 是否是密码类型 false
options.defaultText string 默认值 -
options.placeholder string 输入框为空时占位符 -
options.maxlength number 最大输入长度,设置为 -1 的时候不限制最大长度 -1
options.confirmText string 确定按钮的文字 确定
options.confirmType string 确定按钮的类型 primary
options.onConfirm function 确定按钮的点击事件 -
options.cancelText string 取消按钮的文字 取消
options.cancelType string 取消按钮的类型 default
options.onCancel function 取消按钮的点击事件 -

以上函数调用后,会返回一个引用,可以通过该引用手动关闭对话框

  1. const hideDialog = Dialog.open()
  2. hideDialog()