模态框 Modal

基本

  1. <za-cell>
  2. <za-button slot="description" size="xs" @click="visible1 = true">开启</za-button>
  3. span普通
  4. </za-cell>
  5. <za-cell>
  6. <za-button slot="description" size="xs" @click="visible2 = true">开启</za-button>
  7. 圆角
  8. </za-cell>
  9. <za-cell>
  10. <za-button slot="description" size="xs" @click="visible3 = true">开启</za-button>
  11. 遮罩层可关闭
  12. </za-cell>
  13. <za-cell>
  14. <za-button slot="description" size="xs" @click="visible4 = true">开启</za-button>
  15. 无头部
  16. </za-cell>
  17. <za-cell>
  18. <za-button slot="description" size="xs" @click="visible5 = true">开启</za-button>
  19. 动画效果
  20. </za-cell>
  21. <za-modal :visible.sync="visible1" @close="handleClose" title="标题" :showClose="true">
  22. 模态框内容
  23. </za-modal>
  24. <za-modal :visible.sync="visible2" @close="handleClose" radius :showClose="true">
  25. <div slot="title" style="textAlign:left">标题</div>
  26. 模态框内容
  27. </za-modal>
  28. <za-modal :visible.sync="visible3" @close="handleClose" @maskClick="visible3 = false" title="标题" :showClose="true">
  29. 遮罩层可关闭
  30. </za-modal>
  31. <za-modal :visible.sync="visible4" @close="handleClose" @maskClick="visible4 = false">
  32. 无头部
  33. </za-modal>
  34. <za-modal :visible.sync="visible5" @close="handleClose" animationType="rotate" @maskClick="visible5 = false" title="标题" :showClose="true">
  35. <div style="height:100px">
  36. 当前使用的是rotate旋转效果。<br><br>
  37. 支持多种动画效果:<br>
  38. zoom:缩放效果(默认)<br>
  39. rotate:旋转效果<br>
  40. fade:淡出淡入效果<br>
  41. door:开关门效果<br>
  42. flip:翻转效果<br>
  43. moveUp、moveDown、moveLeft、moveRight:移出移入效果<br>
  44. slideUp、slideDown、slideLeft、slideRight:滑出滑入效果<br>
  45. </div>
  46. </za-modal>

特定场景

<za-cell>
  <za-button slot="description" size="xs" @click="visible6 = true" theme="warning">开启</za-button>
  警告框 Alert
</za-cell>

<za-cell>
  <za-button slot="description" size="xs" @click="visible7 = true" theme="warning">开启</za-button>
  确认框 Confirm
</za-cell>

<za-alert :visible.sync="visible6" radius title="警告" message="这里是警告信息" @close="handleClose"></za-alert>
<za-confirm :visible="visible7" title="确认信息" message="你确定要这样做吗?" :ok="handleOk" :cancel="handleCancel"></za-confirm>

警告框 使用全局方法 $zaAlert

<div @click="handleClick"></div>
<script>
  export default {
    methods: {
      handleClick() {
        this.$zaAlert('警告', {
          callback: event => {
            console.log(event)
          }
        })
      }
    }
  }
</script>
<div @click="handleClick"></div>
<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"
></za-alert>

确认框 使用全局方法 $zaConfirm

<div @click="handleClick"></div>
<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

或者使用模板

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

Vue Script

<script name="vue">
export default {
  data() {
    return {
      visible1: false,
      visible2: false,
      visible3: false,
      visible4: false,
      visible5: false,
      visible6: false,
      visible7: false,
    };
  },
  methods: {
    handleClose(reason, event){
      console.log(reason, event);
    },
    handleOk(){
      alert('ok')
    },
    showAlert() {
      this.$zaAlert('警告12', {
        callback: (event) => {
          console.log(event)
        }
      })
    },
    handleCancel(){
      this.visible7 = false
    }
  },
};
</script>

API

Modal Attributes

属性类型默认值可选值/参数说明
shapestring'radius'形状
visiblebooleanfalse是否显示, 支持.sync 修饰符
ok-textstring'确定'确认按钮文案
cancel-textstring'关闭'取消按钮文案
animation-typestring'fade''fade', 'door', 'flip', 'rotate', 'zoom','moveUp', 'moveDown', 'moveLeft', 'moveRight','slideUp', 'slideDown', 'slideLeft', 'slideRight'动画效果
animationDurationnumber200动画执行时间
widthstring, number'70%'宽度
get-containerFunc指定挂载的父容器 DOM 节点

Modal Events

事件名称说明回调参数
closemodal 关闭时触发的事件reason, event 事件对象
mask-click点击遮罩后触发的事件event 事件对象

Alert Events

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

Confirm Events

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

Modal 模态框 - 图1