为了账号安全,请及时绑定邮箱和手机立即绑定

iView之Modal(一级弹窗和二级弹窗)

标签:
Vue.js

iview之Modal

一、普通组件使用方法

普通组件使用方法直接在页面中写<Modal></Modal>标签,在页面内可以写内容。内容也可以自定义标签引入。下面是两种方式引入内容

  • 第一种,直接在Modal标签内写内容

<template>
  <div>
    <Button type="primary" @click="modal1 = true">普通组件使用方法</Button>
    <Modal
      v-model="modal1"
      title="普通组件使用方法"
      @on-ok="ok"
      @on-cancel="cancel">
      <h1>普通组件使用方法</h1> //自定义内容    </Modal>
  </div></template><script>
  export default {    name: "normalModal",
    data() {      return {        modal1: false
      }
    },    methods: {
      ok() {},
      cancel(){}
    }
  }</script><style scoped></style>
  • 第二种,在Modal标签内引入自定义组件

<template>
  <div>
    <Button type="primary" @click="modal1 = true">普通组件使用方法</Button>
    <Modal
      v-model="modal1"
      title="普通组件使用方法"
      @on-ok="ok"
      @on-cancel="cancel">
     <FirsModal></FirsModal>//使用自定义组件    </Modal>
  </div></template><script>
    //引入自定义组件(弹窗的内容写在FirstModal组件内)
  const FirsModal = () => import("../components/FirstModal.vue"); 
  export default {    name: "normalModal",
    data() {      return {        modal1: false
      }
    },    methods: {
      ok() {},
      cancel(){}
    },    components:{
      FirsModal//定义自定义组件
    }
  }</script><style scoped></style>

一、实例化使用方法

实例化使用方法也分为两种,一种是直接在render函数内直接写Html标签进行页面渲染,另一种是render函数内写自定义的组件进行渲染

  • 第一种

<template>
  <div class="hello">
    <Button @click="handleRender">实例化使用方法</Button>
  </div></template><script>
  export default {    name: 'HelloWorld',
    data() {      return {}
    },    methods: {
      handleRender () {        this.$Modal.confirm({          render: (h) => {            return h('Input', {              props: {                value: this.value,                autofocus: true,                placeholder: 'Please enter your name...'
              },              on: {                input: (val) => {                  this.value = val;
                }
              }
            })
          }
        })
      }
    }
  }</script><style scoped></style>
  • 第二种

<template>
  <div class="hello">
    <Button @click="handleRender">实例化使用方法</Button>
  </div></template><script>
  const FirsModal = () => import("../components/FirstModal.vue");  export default {    name: 'HelloWorld',
    data() {      return {}
    },    methods: {
      handleRender () {        this.$Modal.confirm({          title: 'demo',          render: (h) => {            return h(FirsModal, {//在此处使用引入的组件
              ref: 'firstModal'
            })
          },          width: 600,          closable: false,          okText: "确定",          cancelText: "取消",          loading: true,
          onOk() {}
        });
      }
    }
  }</script><style scoped></style>

三、二级弹窗

有的业务场景需要使用到二级弹窗,即弹窗中再弹窗。在使用二级弹窗的时候。第一个弹窗实例化和普通组件两种方式都可以使用,第二个弹窗的时候只能使用第一种普通组件使用的方式才行,否则会进行覆盖弹窗。

Helloworld.vue

<template>
  <div class="hello">
    <Button @click="openFirstModal">打开第一个弹窗</Button>
  </div></template><script>
  const FirsModal = () => import("../components/FirstModal.vue");  export default {    name: 'HelloWorld',
    data() {      return {}
    },    methods: {
      openFirstModal() {        this.$Modal.confirm({          title: '第一个窗口',          render: (h) => {            return h(FirsModal, {              ref: 'firstModal'
            })
          },          width: 600,          closable: false,          okText: "确定",          cancelText: "取消",          loading: true,
          onOk() {
          }
        });
      }
    }
  }</script><style scoped></style>

FirstModal.vue

<template>
  <div>
    <h1>第一个窗口</h1>
    <Button @click="openSecondModal">打开第二个弹窗</Button>
    <Modal v-model="showModal">
      <SecondModal></SecondModal>
    </Modal>
  </div></template><script>
  const SecondModal = () => import("@/components/SecondModal.vue");  export default {    name: "FirstModal",
    data() {      return {        showModal: false
      }
    },    components: {
      SecondModal
    },    methods: {
      openSecondModal() {        this.showModal = true;
      }
    }
  }</script><style scoped></style>

SecondModal.vue

<template>
  <div>
    <h1>我是第二个窗口</h1>
  </div></template><script>
  export default {    name: "secondModal",
    data() {      return {}
    },
  }</script><style scoped></style>



效果如下图

webp

二级弹窗.png



作者:不爱编程的程序员
链接:https://www.jianshu.com/p/29eb1447eed2


点击查看更多内容
1人点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消