vue+antd-design-vue+a-modal,从父组件打开子组件弹窗

之前弹窗都是写在同一个页面,后来发现代码越来越多,一个页面轻轻松松都过千了
组件化开发,以组件的形式打开弹窗
首先创建子组件,MoveTreeuserModules.vue
在父页面引入并使用,子组件通设置ref

import MoveTreeuserModules from './MoveTreeuserModules.vue'
 components: { MoveTreeuserModules },
  <move-treeuser-modules ref="moveTreeuserRef" :moveTreeuser="moveTreeuser" />

在父页面的点击按钮上,通过$refs.moveTreeuserRef.方法名 触发子组件的方法

 <a-icon slot="addonAfter" type="check" @click="$refs.moveTreeuserRef.add($event)" />

在子组件中

<template>
  <div class="maincontent">
    <a-modal
      title="创建方式"
      destroyOnClose
      :width="450"
      v-model="visible"
      :confirmLoading="confirmLoading"
      @cancel="handleCancel"
      :zIndex="10000"
      :footer="null"
    >
      <div>
        <div class="labelClass">是否将当前项加入到项目中??</div>
        <div class="buttonClass">
          <a-button @click="subcommitCreate" type="primary" class="yesButton"></a-button>
          <a-button @click="subcommitNullCreate" class="noButton"></a-button>
        </div>
      </div>
    </a-modal>
  </div>
</template>

在add方法中使 this.visible = true 打开弹窗

 add(e) {
      e.stopPropagation()
       this.visible = true   
    },
  • 0
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,我可以帮您解答这个问题。 首先,我们可以使用 Ant Design Vue Modal 组件来封装一个弹框。下面是一个简单的示例代码: ```html <template> <a-modal :visible="visible" @ok="handleOk" @cancel="handleCancel"> <p>{{ message }}</p> </a-modal> </template> <script> import { defineComponent } from 'vue'; import { Modal } from 'ant-design-vue'; export default defineComponent({ name: 'MyModal', components: { Modal, }, props: { visible: Boolean, message: String, }, methods: { handleOk() { this.$emit('ok'); }, handleCancel() { this.$emit('cancel'); }, }, }); </script> ``` 在这个示例,我们使用了 Ant Design Vue Modal 组件,并将它封装成一个名为 MyModal组件。我们在组件定义了两个 props:visible 和 message,分别用来控制弹框的显示和传递弹框的内容。我们还定义了两个方法:handleOk 和 handleCancel,分别在用户点击确认和取消按钮时触发,并通过 $emit 方法向父组件传递事件。 接下来,我们可以在父组件引入 MyModal 组件,并使用 v-model 来控制弹框的显示。下面是一个示例代码: ```html <template> <div> <a-button @click="showModal">打开弹框</a-button> <my-modal v-model="modalVisible" :message="modalMessage" @ok="handleOk" @cancel="handleCancel" /> </div> </template> <script> import { defineComponent, ref } from 'vue'; import MyModal from './MyModal.vue'; export default defineComponent({ name: 'MyComponent', components: { MyModal, }, setup() { const modalVisible = ref(false); const modalMessage = ref(''); const showModal = () => { modalVisible.value = true; modalMessage.value = '这是弹框的内容'; }; const handleOk = () => { modalVisible.value = false; console.log('用户点击了确认按钮'); }; const handleCancel = () => { modalVisible.value = false; console.log('用户点击了取消按钮'); }; return { modalVisible, modalMessage, showModal, handleOk, handleCancel, }; }, }); </script> ``` 在这个示例,我们首先引入了 MyModal 组件,并在模板使用 v-model 来控制弹框的显示。我们还定义了一个 showModal 方法,用来在用户点击按钮时显示弹框,并传递弹框的内容。在 MyModal 组件,我们将父组件传递的 visible 和 message props 绑定到 Modal 组件上,并通过 $emit 方法向父组件传递事件。 这样,我们就成功地封装了一个弹框组件,并在父组件调用了它。希望这个示例能够帮助到您。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值