• 引入
  • 代码演示
    • 基本
    • 单例模式
  • API
    • Dialog Props
    • DialogBtnOptions Props
    • Dialog Slots
      • default
      • header
    • Dialog Instance Methods
      • close()
    • Dialog Instance Events
      • @show()
      • @hide()
    • Dialog Static Methods
      • Dialog.confirm(props)
      • Dialog.alert(props)
      • Dialog.succeed(props)
      • Dialog.failed(props)
      • Dialog.closeAll()

    Dialog 模态窗

    Scan me!

    交互式模态窗口

    引入

    1. import { Dialog } from 'mand-mobile'
    2. Dialog.alert({ content: '' })
    3. this.$dialog.alert({ content: '' }) // 全量引入

    代码演示

    基本

    Dialog 模态窗 - 图2

    1. <template>
    2. <div class="md-example-child md-example-child-dialog md-example-child-dialog-0">
    3. <md-button @click="basicDialog.open = true">基本</md-button>
    4. <md-button @click="iconDialog.open = true">带图标</md-button>
    5. <md-button @click="warnDialog.open = true">警示操作</md-button>
    6. <md-button @click="asyncDialog.open = true">异步操作</md-button>
    7. <md-button @click="actDialog.open = true">多操作</md-button>
    8. <md-button @click="slotDialog.open = true">插槽</md-button>
    9. <md-dialog
    10. title="窗口标题"
    11. :closable="true"
    12. v-model="basicDialog.open"
    13. :btns="basicDialog.btns"
    14. >
    15. 人生的刺,就在这里,留恋着不肯快走的,偏是你所不留恋的东西。
    16. </md-dialog>
    17. <md-dialog
    18. icon="location"
    19. :closable="true"
    20. v-model="iconDialog.open"
    21. :btns="iconDialog.btns"
    22. >
    23. 围在城里的人想逃出来,城外的人想冲进去,对婚姻也罢,职业也罢,人生的愿望大都如此。
    24. </md-dialog>
    25. <md-dialog
    26. title="警示操作"
    27. :closable="false"
    28. v-model="warnDialog.open"
    29. :btns="warnDialog.btns"
    30. >
    31. 或是因为习惯了孤独,我们渴望被爱;又或是害怕爱而不得,我们最后仍然选择孤独。
    32. </md-dialog>
    33. <md-dialog
    34. :closable="false"
    35. v-model="asyncDialog.open"
    36. :btns="asyncDialog.btns"
    37. >
    38. 每个人都有属于自己的一片森林,也许我们 从来不曾去过,但它一直在那里,总会在那里。迷失的人迷失了,相逢的人会再相逢。
    39. </md-dialog>
    40. <md-dialog
    41. title="窗口标题"
    42. :closable="false"
    43. layout="column"
    44. v-model="actDialog.open"
    45. :btns="actDialog.btns"
    46. >
    47. 据说每个人需要一面镜子,可以常常自照,知道自己是个什么东西。不过,能自知的人根本不用照镜子;不自知的东西,照了镜子也没有用。
    48. </md-dialog>
    49. <md-dialog
    50. title="家"
    51. :closable="false"
    52. v-model="slotDialog.open"
    53. :btns="slotDialog.btns"
    54. >
    55. <div class="dialog-banner" slot="header">
    56. <img src="http://img-hxy021.didistatic.com/static/strategymis/insurancePlatform_spu/uploads/27fb7f097ca218d743f816836bc7ea4a" alt="">
    57. </div>
    58. 虽然其中有一些争吵、不愉快、曲折,但重要的是一家人整整齐齐。
    59. </md-dialog>
    60. </div>
    61. </template>
    62. <script>
    63. import {Dialog, Button, Toast} from 'mand-mobile'
    64. export default {
    65. name: 'dialog-demo',
    66. components: {
    67. [Dialog.name]: Dialog,
    68. [Button.name]: Button,
    69. },
    70. data() {
    71. return {
    72. basicDialog: {
    73. open: false,
    74. btns: [
    75. {
    76. text: '取消',
    77. handler: this.onBasicCancel,
    78. },
    79. {
    80. text: '确认操作',
    81. handler: this.onBasicConfirm,
    82. },
    83. ],
    84. },
    85. iconDialog: {
    86. open: false,
    87. btns: [
    88. {
    89. text: '确认操作',
    90. handler: this.onIconConfirm,
    91. },
    92. ],
    93. },
    94. warnDialog: {
    95. open: false,
    96. btns: [
    97. {
    98. text: '取消',
    99. },
    100. {
    101. text: '警示操作',
    102. warning: true,
    103. handler: this.onWarnConfirm,
    104. },
    105. ],
    106. },
    107. asyncDialog: {
    108. open: false,
    109. btns: [
    110. {
    111. text: '开始搜索',
    112. icon: 'search',
    113. handler: this.onAsyncConfirm,
    114. },
    115. ],
    116. },
    117. actDialog: {
    118. open: false,
    119. btns: [
    120. {
    121. text: '操作一',
    122. type: 'danger',
    123. handler: this.onActConfirm,
    124. },
    125. {
    126. text: '操作二',
    127. handler: this.onActConfirm,
    128. disabled: true,
    129. },
    130. {
    131. text: '操作三',
    132. handler: this.onActConfirm,
    133. },
    134. ],
    135. },
    136. slotDialog: {
    137. open: false,
    138. btns: [
    139. {
    140. text: '好的',
    141. },
    142. ],
    143. },
    144. }
    145. },
    146. methods: {
    147. onBasicConfirm() {
    148. Toast({
    149. content: '你点击了确认',
    150. })
    151. this.basicDialog.open = false
    152. },
    153. onBasicCancel() {
    154. Toast({
    155. content: '你点击了取消',
    156. })
    157. this.basicDialog.open = false
    158. },
    159. onIconConfirm() {
    160. Toast({
    161. content: '你点击了确认',
    162. })
    163. this.iconDialog.open = false
    164. },
    165. onActConfirm() {
    166. this.actDialog.open = false
    167. },
    168. onAsyncConfirm(btn) {
    169. this.$set(btn, 'loading', true)
    170. this.$set(btn, 'text', '搜索中')
    171. setTimeout(() => {
    172. this.asyncDialog.open = false
    173. this.$set(btn, 'loading', false)
    174. this.$set(btn, 'text', '开始搜索')
    175. Toast({
    176. content: '搜索成功',
    177. })
    178. }, 1500)
    179. },
    180. },
    181. }
    182. </script>
    183. <style lang="stylus" scoped>
    184. .dialog-banner
    185. img
    186. display block
    187. width 100%
    188. </style>
    189.  

    单例模式

    Dialog 模态窗 - 图3

            <template>
      <div class="md-example-child md-example-child-dialog md-example-child-dialog-1">
        <md-button @click="alert">警告弹窗</md-button>
        <md-button @click="confirm">确认弹窗</md-button>
        <md-button @click="succeedConfirm">成功弹窗</md-button>
        <md-button @click="failedConfirm">失败弹窗</md-button>
      </div>
    </template>
    
    <script>
    import {Dialog, Button} from 'mand-mobile'
    
    export default {
      name: 'dialog-demo',
      components: {
        [Dialog.name]: Dialog,
        [Button.name]: Button,
      },
      methods: {
        alert() {
          Dialog.alert({
            title: '警告',
            content: '您正在进行非法操作',
            cancelText: '取消',
            confirmText: '确定',
            onConfirm: () => console.log('[Dialog.alert] confirm clicked'),
          })
        },
        confirm() {
          Dialog.confirm({
            title: '确认',
            content: '请确认是否进行操作',
            confirmText: '确定',
            onConfirm: () => console.log('[Dialog.confirm] confirm clicked'),
          })
        },
        succeedConfirm() {
          Dialog.succeed({
            title: '成功',
            content: '恭喜您成功完成操作',
            confirmText: '确定',
            onConfirm: () => console.log('[Dialog.succeed] confirm clicked'),
          })
        },
        failedConfirm() {
          Dialog.failed({
            title: '失败',
            content: '操作失败,请稍后重试',
            confirmText: '确定',
            onConfirm: () => console.log('[Dialog.failed] confirm clicked'),
          })
        },
      },
    }
    
    </script>
    
          

    API

    Dialog Props

    属性说明类型默认值备注
    v-model双向绑定是否显示窗口Booleanfalse-
    title窗口标题String--
    iconIcon组件图标名称String--
    icon-svgsvg图标Booleanfalse如需自定义图标, 请查看Icon组件
    closable是否显示关闭按钮Booleantrue-
    layout底部按钮组布局方式, row, columnStringrow-
    btns底部操作按钮组Array<DialogBtnOptions>[]-
    append-to组件的挂载节点HTMLElementdocument.body-
    has-mask是否有蒙层Booleantrue-
    mask-closable点击蒙层是否可关闭弹出层Booleanfalse-
    transition弹出层过度动画String可选值参考Transition

    DialogBtnOptions Props

    属性说明类型默认值
    text按钮文案String-
    handler点击回调Function(btn: DialogBtnOptions)-
    warning警示按钮Booleanfalse
    disabled 2.4.0+禁用按钮Booleanfalse
    loading 2.4.0+加载中按钮Booleanfalse
    icon按钮图标String-
    iconSvg按钮svg图标Booleanfalse

    Dialog Slots

    default

    组件子元素会被当做默认插槽内容使用,适合于不需要标题的自定义窗口内容的场景

    header

    顶部插槽,一般用于放置图片等 2.4.0+

    Dialog Instance Methods

    close()

    隐藏弹窗

    Dialog Instance Events

    @show()

    模态窗口显示后触发的事件

    @hide()

    模态窗口隐藏后触发的事件

    Dialog Static Methods

    Dialog.confirm(props)

    静态方法创建确认模态窗口, 返回Dialog实例

    属性说明类型默认值
    icon图标String-
    title窗口标题String-
    content正文内容String-
    cancelText底部取消按钮文字String取消
    confirmText底部确认按钮文字String确认
    cancelWarning点击取消按钮为警示操作Booleanfalse
    confirmWarning点击确认按钮为警示操作Booleanfalse
    onConfirm点击确认按钮回调函数Function-
    onCancel点击取消按钮回调函数Function-
    Dialog.alert(props)

    静态方法创建警告模态窗口, 返回Dialog实例

    属性说明类型默认值
    icon图标String-
    title窗口标题String-
    content正文内容String-
    confirmText底部确认按钮文字String确认
    warning点击确认按钮为警示操作Booleanfalse
    onConfirm点击确认按钮回调函数Function-
    Dialog.succeed(props)

    静态方法创建成功确认模态窗口, 返回Dialog实例

    属性说明类型默认值
    title窗口标题String-
    content正文内容String-
    confirmText底部确认按钮文字String确认
    onConfirm点击确认按钮回调函数Function-
    onCancel点击取消按钮回调函数Function-
    Dialog.failed(props)

    静态方法创建失败确认模态窗口, 返回Dialog实例

    属性说明类型默认值
    title窗口标题String-
    content正文内容String-
    confirmText底部确认按钮文字String确认
    onConfirm点击确认按钮回调函数Function-
    onCancel点击取消按钮回调函数Function-
    Dialog.closeAll()

    静态方法关闭所有动态创建的全局Dialog