vue2和vue3使用echarts时无数据,怎么显示暂无数据图片或文字
一开始也经历了用v-if和v-show,v-show的话echarts还会留出暂无数据图片的位置,导致echarts变形,v-if在加载和不加载切换时,dom会获取不到;后来也是在网上找的方法,时间有点长,原文地址就不贴了。
对了,在网上查方法的时候还找到了echarts noDataLoading这个方法,按照网上的写完,但是并没有起作用,不知道是方法移除了还是其他问题,后面实现了也没管它
vue2
echarts版本:4.9.0
默认你的echarts已经注册在全局,可以在组件中用this.$echarts()访问到(注册比较简单不细说)
html代码
<div id="mychart" style="width: 100%;height: 100%"></div>
script代码
import noData from '@/assets/nodata.png'
//ajax获取数据,判断数据为不为空,为空展示暂无数据,不为空则展示echarts
if(res.data.length){
this.initEcharts(res.data);
}else{
this.showNoData('mychart')
}
//暂无数据的方法
showNoData(id){
const noDataImg = noData // 暂无数据图片路径
const averageChart = document.getElementById(id)
averageChart.style.display = 'flex'
averageChart.style.flexDirection = 'column'
averageChart.style.justifyContent = 'center'
averageChart.style.alignItems = 'center'
if(averageChart.firstChild){
averageChart.innerHTML=''
}// 移除
const mainImg = document.createElement('img') // 添加要显示的图片
averageChart.appendChild(mainImg)
mainImg.style.width = 'auto'
mainImg.style.height = 'auto'
mainImg.src = noDataImg
const pBlock = document.createElement('p')//添加p标签
averageChart.appendChild(pBlock)
pBlock.innerHTML = '暂无数据' //我的图片里没有字,所以自己加了字,图片里有字可以把这里去掉或设为空
pBlock.style.color = '#2c3e50';
averageChart.removeAttribute('_echarts_instance_')
},
//渲染echarts
initEcharts(data){
let dom = document.getElementById("mychart");
let mychart = this.$echarts.getInstanceByDom(dom)
//注意一下这里,我的项目里可以选择时间,暂无数据图片和echarts来回切换,所以这里就要判断有没有echarts,因为在showNoData方法里有清除元素,不加的话会报错
if(mychart == null){
mychart = this.$echarts.init(dom)
}
//数据处理就不写了 最后把组好的option set进去就行了
mychart.setOption(你的option);
},
vue3
vue3我的使用场景跟vue2不太一样,3中没有时间选择框不需要切换echarts和图片(如有需要可以参考上面vue2的方法),echarts的数据是从父组件传过来的,所以要监听数组的变化(watch)并且dom也得存在(nextTick )
html代码
<div ref="bar" style="width: 100%; height: 100%"></div>
script setup代码
import noData from '../../../assets/nodata.png'
import { ref, watch, nextTick } from 'vue'
import * as echarts from 'echarts';
const props = defineProps({
data:{ type:Array, default:[]},
})
const bar = ref()
const initCharts = ()=>{
let barCharts = echarts.init(bar.value);
if(props.data.length){
barCharts.setOption(option)//用自己的option
}else{
showNoData(bar.value)
}
}
const showNoData = (ele) => {
const noDataImg = noData // 暂无数据图片路径
const averageChart = ele
averageChart.style.display = 'flex'
averageChart.style.flexDirection = 'column'
averageChart.style.justifyContent = 'center'
averageChart.style.alignItems = 'center'
if(averageChart.firstChild){
averageChart.innerHTML=''
}// 移除
const mainImg = document.createElement('img') // 添加要显示的图片
averageChart.appendChild(mainImg)
mainImg.style.width = '60px'
mainImg.style.height = '55px'
mainImg.src = noDataImg
const pBlock = document.createElement('p')//添加p标签
averageChart.appendChild(pBlock)
pBlock.innerHTML = ''
pBlock.style.color = '#2c3e50';
averageChart.removeAttribute('_echarts_instance_')
}
watch(
()=>props.data,
async(newValue)=>{
await nextTick()
initCharts()
},
{immediate:true,deep:true}
)
ok,到这里问题已解决
vue2和vue3使用echarts时无数据,怎么显示暂无数据图片或文字的更多相关文章
- element el-tree、el-table组件加载数据前闪现 暂无数据 清除
相信很多人在使用element el-tree.el-table组件加载数据前会显示一个" 暂无数据 ",体验很不友好,有没有办法处理不显示呢?答案是:有的.废话不多说直接上代码 ...
- element table 先显示暂无数据 之后再加载数据 问题
项目中的表格请求数据时,进去页面,先出现 ''暂无数据'' 字样闪现一下之后在进行加载数据,用户体验十分不好 解决办法: <template> <el-table :data=&qu ...
- Repeater 控件 当数据源没有数据的时候显示 暂无数据 的两种方式
第一种:现在前台给Repeater控件外面的div加一个runat=”server” 然后在cs后台判断数据源是否为空, 是的话就修改这个前台div的InnerText或者是InnerHtml 即可 ...
- 如何解决在ie下,Echarts多次使用setOption更改数据时,数据错乱问题
一.问题描述 根据用户的操作,通过Ajax请求,获取某段时间内的某数据趋势折线图数据.用户切换数据项或更改时间段时,ie中渲染的折线图包含了上一次获取的数据,导致数据错乱,如下图所示: 二.代码 数据 ...
- Repeater在无数据记录时显示暂无数据
原文:Repeater在无数据记录时显示暂无数据 方法就是在FooterTemplate加个Label并根据repeater.Items.Count判断是否有记录.关键代码如下: <Footer ...
- easyUI draggable插件使用不当,导致拖动div内部文本框无法输入;设置echarts数据为空时就显示空白,不要动画和文字
先上一个Demo <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://ww ...
- Repeater为空时显示“暂无数据”,很方便实用方法
Repeater为空时显示“暂无数据”,很方便实用方法 <FooterTemplate> <asp:Label ID="lblEmptyZP" Text=&q ...
- echart大坑总结~~echarts呈现的数据刷新不完全/echarts画图时tooltip不会更新
谨以此文记录在使用echarts中遇到的各种大坑或者小坑,陆续更新加入新坑 欢迎朋友们一起提坑,我们势必绕过它们,愿我们永不再入坑~ 坑一:echarts图表重新赋值数据,图表显示会存在一部分原来的数 ...
- Vue2和Vue3技术整理1 - 入门篇 - 更新完毕
Vue2 0.前言 首先说明:要直接上手简单得很,看官网熟悉大概有哪些东西.怎么用的,然后简单练一下就可以做出程序来了,最多两天,无论Vue2还是Vue3,就都完全可以了,Vue3就是比Vue2多了一 ...
- vue2升级vue3指南(二)—— 语法warning&error篇
本文总结了vue2升级vue3可能会遇到的语法警告和错误,如果想知道怎样升级,可以查看我的上一篇文章:vue2升级vue3指南(一)-- 环境准备和构建篇 Warning 1.deep /deep/和 ...
随机推荐
- WinUI(WASDK)使用HelixToolkit加载3D模型并进行项目实践
前言 本人之前开发了一个叫电子脑壳的上位机应用,给稚晖君ElectronBot开源机器人提供一些功能,但是由于是结合硬件才能使用的软件,如果拥有硬件的人员太少,就会导致我的软件没什么人用,于是我就想着 ...
- 曲线艺术编程 coding curves 第七章 抛物线(Parabolas)
抛物线 Parabolas 原作:Keith Peters https://www.bit-101.com/blog/2022/11/coding-curves/ 译者:池中物王二狗(sheldon) ...
- Redis数据结构:高频面试题及解析
概述 Redis 是速度非常快的非关系型(NoSQL)内存键值数据库,可以存储键和五种不同类型的值之间的映射. 键的类型只能为字符串,值支持五种数据类型:字符串.列表.集合.散列表.有序集合. Red ...
- 编译器设计中的元编程:从Python到JavaScript的实现
目录 编译器设计中的元编程:从Python到JavaScript的实现 随着编程语言的发展,编译器的实现也在不断地演变.编译器的实现方式有很多种,其中元编程(metaprogramming)是一种非常 ...
- windows安全中心打不开
解决win11打不开安全中心的问题!!! 许多用户在最近都升级了Windows11系统,而且不少用户最近在使用Win11的时候发现自己打不开Windows安全中心 操作方法: 管理员权限打开Power ...
- sharding-jdbc分库连接数优化
一.背景: 配运平台组的快递订单履约中心(cp-eofc)及物流平台履约中心(jdl-uep-ofc)系统都使用了ShardingSphere生态的sharding-jdbc作为分库分表中间件, 整个 ...
- 大白话讲讲 Go 语言的 sync.Map(二)
上一篇文章 <大白话讲讲 Go 语言的 sync.Map(一)> 讲到 entry 数据结构,原因是 Go 语言标准库的 map 不是线程安全的,通过加一层抽象回避这个问题. 当一个 ke ...
- MyBatis使用注解开发(及Sqlsession连接器的本质)
使用注解开发 底层实现机制是反射和,动态代码.反射可以获得这个类的方法属性还可以创建对象,执行方法. 面向接口编程 之前学过,面向对象编程,也学习过接口.但是真正的开发中,很多时候我们会选择面向接口编 ...
- web系统字典统一中文翻译问题
几乎每个web系统都离不开各种状态码.订单新建,待支付,未支付,已支付,待发货. 消息已读未读,任务待标记待审批已审批待流转已完成未完成.等等. 复杂一点的,会有多级状态码. 状态码超出3个的,一般都 ...
- OpenCV4之特征提取与对象检测
1.图像特征概述 图像特征的定义与表示 图像特征表示是该图像唯一的表述,是图像的DNA 图像特征提取概述 传统图像特征提取 - 主要基于纹理.角点.颜色分布.梯度.边缘等 深度卷积神经网络特征提取 - ...