首页 > 其他分享 >Element Plus组件v-loading在el-dialog组件上使用无效

Element Plus组件v-loading在el-dialog组件上使用无效

时间:2024-12-03 21:43:20浏览次数:10  
标签:el loading Element Plus dialog 组件

前情


公司有经常需要做一些后台管理页面,我们选择了Element Plus,它是基于 Vue 3,面向设计师和开发者的组件库,是Vue框架生态中比较火的UI组件库,组件库丰富易用,组件链接:一个 Vue 3 UI 框架 | Element Plus,对于请求服务数据交互提供一个loading加载中效果是一个提高用户体验的好方法。

坑位


最近在开发一个需求,点击操作按钮根据传入的id获取相应数据渲染el-dialog组件内容,我于是按正常方式使用v-loading指令实现加载中loading效果,但事与愿违,v-loading失效了……

Why?


个人猜测是Element Plus组件库的v-loading指令不支持el-dialog组件上使用

解决方案1


加一个全局loading,Element Plus组件库不但可以通过v-loading指令实现,也支持以服务的形式实现,关键代码如下:

import { ElLoading } from "element-plus";

const loading = ElLoading.service({
  lock: true,
  text: "数据加载中...",
  background: "rgba(255, 255, 255, 0.6)"
});
  
setTimeout(() => {
	loading.close();
}, 1500);

解决方案2

既然el-dialog不支持v-loading指定,我们可以把loading效果加在弹窗组件的内容容器里,关键代码如下:

<template>
  <el-dialog width="500px">
    <template #header>
      <div class="font-size-20 font-bold">弹窗标题</div>
    </template>
    <div v-loading="true" class="main-content">
    </div>
    <template #footer>
      <div class="flex justify-end gap-2">
        <el-button @click="close">取消</el-button>
        <el-button type="primary" @click="confirm">确认</el-button>
      </div>
    </template>
  </el-dialog>
</template>

<style lang="scss" scoped>
.main-content{
	width: 100%;
	height: 400px;
}
</style>

解决方案3

Element Plus组件库支持以服务的方式来实现loading效果,细看文挡当以服务的方式实现loading效果的时候,你会发现它还支持loading效果要插入的容器组件,于是有了下面的解决方法,el-dialog组件通过custom-class添加自定义class,再把loading组件插入自定义的class容器中,关键代码如下:

<template>
  <el-dialog
    v-model="isOpen"
    @open="onOpen"
    @close="onClose"
    custom-class="dialog-loading-warp"
    width="500px"
  >
    <template #header>
      <div class="font-size-20 font-bold">结清买断</div>
    </template>
    <div>
    我是弹窗主内容
    </div>
    <template #footer>
      <div class="flex justify-end gap-2">
        <el-button @click="close">取消</el-button>
        <el-button type="primary" @click="confirm">确认</el-button>
      </div>
    </template>
  </el-dialog>
</template>

<script setup>
	import { ElLoading } from "element-plus";

	const loading = ElLoading.service({
	  lock: true,
	  text: "数据加载中...",
	  fullscreen: false,
	  target: 'dialog-loading-warp'
	  background: "rgba(255, 255, 255, 0.6)"
	});
	  
	setTimeout(() => {
		loading.close();
	}, 1500);
</script>

<style lang="scss" scoped></style>

总结

上面三种方式都能解决问题,可以根据自己的实际情况来决定使用哪一种方式,当然解决的方法也绝不止上面三种,如果你有更好的解决方案欢迎留言一起讨论。

标签:el,loading,Element,Plus,dialog,组件
From: https://www.cnblogs.com/xwwin/p/18585117

相关文章

  • 【Azure Developer】分享一段Python代码调用Graph API创建用户的示例
    问题描述在Azure门户(Createnewuser-MicrosoftAzure由世纪互联运营)中添加新用户,如果想通过代码来实现,有没有示例代码参考呢?问题解答示例代码fromazure.identityimportAzureAuthorityHostsfromazure.identity.aioimportClientSecretCredentialfromkiota_auth......
  • H5-24 CSS盒子模型(Box Model)
    1、概念:所有HTML元素可以看作盒子,在CSS中,"boxmodel"这一术语是用来设计和布局时使用CSS盒模型本质上是一个盒子,封装周围的元素HTML元素,它包括:外边距(margin),边框(border),内边距(padding),和实际内容(content)Margin(外边距):清楚边框外的区域,外边距是透明的Border(边框):围绕在内边距和内容外......
  • 光伏电站组件与逆变器如何匹配?
    随着可再生能源的迅猛发展,光伏发电已经成为全球能源转型的重要组成部分。在光伏电站的设计与运行中,光伏组件(通常称为太阳能电池板)和逆变器之间的匹配至关重要。合理的组件与逆变器配置可以最大化电能转换效率,提高系统的经济性与可靠性。一、光伏组件与逆变器的基本概念在深入......
  • k8s阶段05 Operator, DaemonSet, Job, CronJob, Ingress和Ingress Controller(蓝绿/恢
    StatefulSet:编排有状态应用基本要求:需要给每个实例惟一且固定的标识,依赖于一个专用的HeadlessService;需要给每个实例一个专用的PVC卷,该卷要来自volumeTemplateClaim,卷的标识“template_name-pod_name”;PodManagementPolicy:OrderedReady:按顺序,依次......
  • 记录一下svgicon组件的使用
    总是忘记若依中怎么引用的svgicon,记录一下yarnaddvite-plugin-svg-icons--------vite.config.tsplugins:[vue(),createSvgIconsPlugin({//指定要缓存的图标文件夹iconDirs:[resolve(process.cwd(),"./src/assets/icons/svg")],//执行iconname的......
  • ChannelPipeline和ChannelHandle详解
    本文主要讲解ChannelPipeline和ChannelHandle的作用ChannelPipeline和ChannelHandle的定义当有一个客户端连接SocketChannl的时候初始化的时候,Netty会为他准备一个ChannelPipelin。在ChannelPipelin有由ChannelHandleContext构成的双向链表,每个ChannelHandleContext内部持有一......
  • #渗透测试#SRC漏洞挖掘#红蓝攻防#黑客工具之Burp Suite进阶-自定义UI组件教程
    免责声明本教程仅为合法的教学目的而准备,严禁用于任何形式的违法犯罪活动及其他商业行为,在使用本教程前,您应确保该行为符合当地的法律法规,继续阅读即表示您需自行承担所有操作的后果,如有异议,请立即停止本文章读。 如需获取工具,评论区留言即可!!!目录一、BurpSuite自定义UI......
  • Java 分支结构 - if…else/switch
    顺序结构只能顺序执行,不能进行判断和选择,因此需要分支结构。Java有两种分支结构:if语句switch语句if语句一个if语句包含一个布尔表达式和一条或多条语句。语法If语句的用语法如下:if(布尔表达式){//如果布尔表达式为true将执行的语句}如果布尔表达式的值为true......
  • Android 14.0 kenel和frameworks中修改ram运行内存的功能实现
    1.前言在14.0的系统rom产品开发定制中,在对一些产品开发中的配置需求方面,在产品后续订单中,产品提出要提高硬件配置,但是硬件方面已经定板,项目时间比较仓促,所以来不及对硬件重新定制,就需要软件方面在ram运行内存的容量大小方面作假,修改ram真实的大小容量,所以就需要在kenel驱动部......
  • shell编程作业,获取ipv4的地址+crontab定时任务+无限重启Linux+⽤Shell写⼀个计算器+⽤
    公众号:泷羽Sec-尘宇安全声明!学习视频来自B站up主泷羽sec有兴趣的师傅可以关注一下,如涉及侵权马上删除文章,笔记只是方便各位师傅的学习和探讨,文章所提到的网站以及内容,只做学习交流,其他均与本人以及泷羽sec团队无关,切勿触碰法律底线,否则后果自负!!!!有兴趣的小伙伴可以点击......