模态框 Modal

基本用法

模态框 Modal - 图1

  1. <template lang="html">
  2. <div>
  3. <div class="demo-hidden">
  4. <za-panel>
  5. <za-panel-header title="基本"></za-panel-header>
  6. <za-panel-body>
  7. <za-cell>
  8. <za-button slot='description' size='xs' @click='visible1 = true'>开启</za-button>
  9. 普通
  10. </za-cell>
  11. <za-cell>
  12. <za-button slot='description' size='xs' @click='visible2 = true'>开启</za-button>
  13. 圆角
  14. </za-cell>
  15. <za-cell>
  16. <za-button slot='description' size='xs' @click='visible3 = true'>开启</za-button>
  17. 遮罩层可关闭
  18. </za-cell>
  19. <za-cell>
  20. <za-button slot='description' size='xs' @click='visible4 = true'>开启</za-button>
  21. 无头部
  22. </za-cell>
  23. <za-cell>
  24. <za-button slot='description' size='xs' @click='visible5 = true'>开启</za-button>
  25. 动画效果
  26. </za-cell>
  27. </za-panel-body>
  28. </za-panel>
  29. <za-panel>
  30. <za-panel-header title="特定场景"></za-panel-header>
  31. <za-panel-body>
  32. <za-cell>
  33. <za-button slot='description' size='xs' @click='visible6 = true' theme="warning">开启</za-button>
  34. 警告框 Alert
  35. </za-cell>
  36. <za-cell>
  37. <za-button slot='description' size='xs' @click='visible7 = true' theme="warning">开启</za-button>
  38. 确认框 Confirm
  39. </za-cell>
  40. </za-panel-body>
  41. </za-panel>
  42. <za-modal :visible.sync='visible1' @close='handleClose' title="标题" :show-close='true'>
  43. 模态框内容
  44. </za-modal>
  45. <za-modal :visible.sync='visible2' @close='handleClose' radius :show-close='true'>
  46. <div slot='title' style='textAlign:left'>标题</div>
  47. 模态框内容
  48. </za-modal>
  49. <za-modal :visible.sync='visible3' @close='handleClose' :close-on-click-modal='true' title="标题" :show-close='true' >
  50. 遮罩层可关闭
  51. </za-modal>
  52. <za-modal :visible.sync='visible4' @close='handleClose' :close-on-click-modal='true'>
  53. 无头部
  54. </za-modal>
  55. <za-modal :visible.sync='visible5' @close='handleClose' animationType="rotate" :close-on-click-modal='true' title="标题" :show-close='true'>
  56. 当前使用的是rotate旋转效果。<br /><br />
  57. 支持多种动画效果:<br />
  58. zoom:缩放效果(默认)<br />
  59. rotate:旋转效果<br />
  60. fade:淡出淡入效果<br />
  61. door:开关门效果<br />
  62. flip:翻转效果<br />
  63. moveUp、moveDown、moveLeft、moveRight:移出移入效果<br />
  64. slideUp、slideDown、slideLeft、slideRight:滑出滑入效果<br />
  65. </za-modal>
  66. <za-alert :visible.sync='visible6' radius title="警告" message="这里是警告信息" @close='handleClose'></za-alert>
  67. <za-confirm :visible='visible7' title="确认信息" message="你确定要这样做吗?" :ok='handleOk' :cancel='handleCancel'></za-confirm>
  68. </div>
  69. </div>
  70. </template>
  71. <script>
  72. export default {
  73. data() {
  74. return {
  75. visible1: false,
  76. visible2: false,
  77. visible3: false,
  78. visible4: false,
  79. visible5: false,
  80. visible6: false,
  81. visible7: false,
  82. };
  83. },
  84. methods: {
  85. handleClose(reason, event){
  86. console.log(reason, event);
  87. },
  88. handleOk(){
  89. alert('ok')
  90. },
  91. handleCancel(){
  92. this.visible7 = false
  93. }
  94. },
  95. };
  96. </script>

特定场景

警告框 使用全局方法 $zaAlert

<template>
<div @click='handleClick'></div>
</template>
<script>
export default{
  methods:{
    handleClick(){
      this.$zaAlert('警告', {
        callback: (event) => {
          console.log(event)
        }
      })
    }
  }
}
</script>

<template>
<div @click='handleClick'></div>
</template>
<script>
export default{
  methods:{
    handleClick(){
      const h = this.$createElement;
      // 这里的message可以是VNode
      const message = h('p', null, [
        h('span', null, '内容可以是 '),
        h('i', { style: 'color: teal' }, 'VNode')
      ]);
      this.$zaAlert(message, {
        callback: (event) => {
          console.log(event)
        }
      })
    }
  }
}

或者使用 za-alert Component

<za-alert :visible.sync='visible' radius title="警告" message="这里是警告信息" @close='handleClose' />

确认框 使用全局方法 $zaConfirm

<template>
  <div @click='handleClick'></div>
</template>
<script>
export default{
  methods:{
      handleClick() {
        const h = this.$createElement;
        // message 可以是VNode 或者 String
        const message = h('p', null, [
          h('span', null, '内容可以是 '),
          h('i', { style: 'color: teal' }, 'VNode'),
        ]);
        // $zaConfirm 参数为 <?message: String, options: Object>
        this.$zaConfirm({
          message,
          ok: (e) => {
            this.$zaToast('ok');
            return true; // 此处返回true, 会关闭confirm
          },
          cancel: (e) => {
            this.$zaToast('closed');
          },
        });
      }
    }
}
</script>

注意:这里的 okcancel 需要使用Arrow Function, 这样内部的this才会指向当前的vue实例, 另外,ok 函数只有在返回 true 的时候会关闭 Confirm, 而 cancel 会自动关闭 Confirm

或者使用模板

<template>
  <za-confirm :visible='visible' title="确认信息" message="你确定吗?" :ok='handleOk' :cancel='handleCancel' />
<template>

API

Modal Attributes

属性类型默认值可选值/参数说明
prefixClsstringza-modal类名前缀
shapestring'radius'形状
visibleboolfalse是否显示, 支持.sync修饰符
okTextstring'确定'确认按钮文案
cancelTextstring'关闭'取消按钮文案
animationTypestring'fade''fade', 'door', 'flip', 'rotate', 'zoom','moveUp', 'moveDown', 'moveLeft', 'moveRight','slideUp', 'slideDown', 'slideLeft', 'slideRight'动画效果
animationDurationnumber200动画执行时间
widthstring, number'70%'宽度
close-on-click-modalboolfalse是否可以通过点击遮罩层关闭modal

Modal Events

事件名称说明回调参数
closemodal 关闭时触发的事件, 当点击按钮关闭时第一个参数为'close', 当点击遮罩层关闭时,第一个参数为'clickaway'reason, event 事件对象

Alert Events

事件名称说明回调参数
closealert 关闭时触发的事件event 事件对象

Confirm Events

事件名称说明回调参数
okconfirm 确定时触发的事件event 事件对象
cancelconfirm 取消时触发的事件event 事件对象