enementui中实现loding实现局部加载,以el-dialog为例

效果

在这里插入图片描述

封装loading加载(也可以直接使用,封装为了方便多次调用)

temp.js

import { Loading } from "element-ui";

export const servicesLoading = (node,str,lock) => {
  return Loading.service({
    target: document.querySelector(node),//loading需要覆盖的DOM节点,默认为body
    text: str,//加载文案
    lock,//同v-loading的修饰符
    // backgroundColor: 'rgba(55,55,55,0.4)',//背景色
    // spinner: 'el-icon-loading',//加载图标
  })
}

页面使用

<template>
	<div>
		<el-button type="text" round @click="dialogVisible=true">打开dialog</el-button>
		<el-dialog
		  title="提示"
		  :visible.sync="dialogVisible"
		  :close-on-click-modal="false"
		  :append-to-body="true"
		  width="30%">
		  <span>这是一段信息</span>
		  <span slot="footer" class="dialog-footer">
		    <el-button @click="dialogVisible = false">取 消</el-button>
		    <el-button type="primary" @click="sureFunc">确 定</el-button>
		  </span>
		</el-dialog>
	</div>
</template>
<script>
import { servicesLoading } from '@/toolStation/temp.js'
export default {
	data() {
		return {
			dialogVisible:false,
		}
	},
	mounted() {

	},
	methods: {
		sureFunc() {
			const loading = servicesLoading('.el-dialog', '正在加载', true)
			setTimeout(() => {
				loading.close()
			}, 2000);
		}
	},
}
</script>
<style lang="less" scoped>
</style>
  • 封装之后在需要的地方进行调用就可以了,注意封装的第一个参数:覆盖的dom节点要选对;

  • 在我们一个页面有多个dialog时,节点仍使用.el-dialog显然会冲突,这个时候我们可以使用v-if来解决这个问题。如果不想使用v-if的话可以考虑给dialog加一个类样式,如加一个名为addCls的类,那么在封装的第一参数就可以写为.addCls .el-dialog,就可以解决了。

  • 这次分享到此就结束了,谢谢大家

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值