element-plus组件中的el-drawer的使用

在项目的制作过程中经常会用到弹窗组件,这里假设一种情况当你在一个页面需要多个弹窗组件的时候怎么样才能精准的打开和关闭对应的弹窗呐??
① 绑定一个点击事件----【给点击事件传入一个下标】这里是打开事件
② 使用element-plus中的 :before-close点击关闭事件,但是在这里需要传入一个done,所以我的传递方式是这样的

<div>
          <!-- 点击图标显示抽屉组件 -->
          <div :key="1" @click="displayDrawer(1)" style="z-index:6666; position: absolute;left: 46%; top: 5%;">
            <svg-icon width="30px" height="30px" name="zuopinxiangqing"></svg-icon>
          </div>
          <!-- 抽屉组件1 -->
          <el-drawer :key="1" v-model="drawerList[0].display" title="作品详情1" :direction="direction"
             :before-close="(done:any) => handleClose(done, 2)"  :index="1" style="right: 50%;">
            <span>Hi there! This is drawer 1.</span>
          </el-drawer>
        </div>
<div>
            <!-- 点击图标显示抽屉组件 -->
            <div :key="2" @click="displayDrawer(2)"
              style="z-index:6666; width: 45px; display: flex; justify-content: flex-end; padding-right: 15px; ">
              <svg-icon width="30px" height="30px" name="zuopinxiangqing"></svg-icon>
            </div>
            <!-- 多个抽屉组件 -->
            <!-- 抽屉组件2 -->
            <el-drawer :key="2" v-model="drawerList[1].display" title="作品详情2" :direction="direction"
            :before-close="(done:any) => handleClose(done, 2)" :index="2">
              <span>Hi there! This is drawer 2.</span>
            </el-drawer>
          </div>

这里有两个弹窗和对应的两个点击事件

<script>
const drawerList = ref([
  { index: 1, title: '作品详情1', display: false },
  { index: 2, title: '作品详情2', display: false }
]);
const displayDrawer = (index: any) => {
  drawerList.value[index - 1].display = true;
};

const handleClose = (done: any, index: any) => {
  drawerList.value[index - 1].display = false;
  done()
};
</script>

这里的

:before-close="(done:any) => handleClose(done, 2)"

这里我不是很清楚done的状态和类型方法所以使用了上面的方式将数据进行了传递,最终效果。
在这里插入图片描述
在这里插入图片描述
这里实现了左右两个弹窗!!!

  • 9
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
可以使用 Vue3 和 Element Plus 的 Drawer 组件来封装一个抽屉组件。首先需要在组件引入 Drawer 组件,然后在模板使用 Drawer 组件的属性和事件来实现抽屉的展示和隐藏。 以下是一个简单的抽屉组件的代码示例: ```vue <template> <el-drawer :visible="visible" :title="title" :size="size" :direction="direction" :before-close="beforeClose" @open="handleOpen" @close="handleClose" > <slot></slot> </el-drawer> </template> <script> import { ref } from 'vue'; import { ElDrawer } from 'element-plus'; export default { name: 'MyDrawer', components: { ElDrawer, }, props: { visible: { type: Boolean, default: false, }, title: { type: String, default: '', }, size: { type: String, default: '30%', }, direction: { type: String, default: 'rtl', }, }, setup(props, { emit }) { const beforeClose = (done) => { // 可以在这里添加关闭前的逻辑 done(); }; const handleOpen = () => { emit('update:visible', true); }; const handleClose = () => { emit('update:visible', false); }; return { beforeClose, handleOpen, handleClose, }; }, }; </script> ``` 在父组件使用该抽屉组件时,可以通过 v-model 来控制抽屉的显示和隐藏: ```vue <template> <div> <el-button @click="visible = true">打开抽屉</el-button> <my-drawer v-model="visible" title="抽屉标题"> 抽屉内容 </my-drawer> </div> </template> <script> import MyDrawer from './MyDrawer.vue'; export default { components: { MyDrawer, }, data() { return { visible: false, }; }, }; </script> ```

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值