前言
最近在学习eCharts,学习到了异步更新和数据加载这一块,觉着有必要总结一下,方法以后的时候参考学习,在开始本文之前,对eCharts不熟悉的朋友们可以参考下这篇文章:https://www.jb51.net/article/128790.htm 下面话不多说了,来一起看看详细的介绍吧。
使用方法
使用Echarts首先得先把Echarts.js引进来(放在文件的入口html文件里面)
<script src="/UploadFiles/2021-04-02/echarts.common.min.js">
在绘图前我们需要为 ECharts 准备一个具备高宽的 DOM 容器
<div id="main" style="width: 600px;height:400px;"></div>初始化一个 echarts 实例并通过 setOption 方法生成一个你想要的图表类型,
首先先把,echarts里setOption的option,单独领出来,初始化放在data里
data() { return { getSetOption: {//折线图 title: { text: null }, tooltip: { trigger: 'axis' }, grid: { left: '3%', right: '4%', bottom: '3%', containLabel: true }, yAxis: { type: 'value' }, legend: { data: [] }, xAxis: { type: 'category', data: [] }, series: [ { name: null, type: 'line', stack: '总人数', data: [] } ] }, getPieOption: {//饼图 title: { text: null }, tooltip: { tooltip: 'item', formatter: "{a} <br/> {b} : {c} ({d}%)" }, series : [ { type: 'pie', radius: '55%', data:[ ].sort(function(a,b){return a.value - b.value;}), roseType: 'angle', } ] }, } }下面是在methods里初始化的一个方法,
drawLineChart() { this.lineChartOrder = echarts.init(document.getElementById('lineChartOrder')); this.lineChartOrder.setOption(this.getSetOption); },然后在mounted里调用这个方法
this.drawLineChart(),接下来就就是数据异步加载与更新了。
以下的代码是本地的json类型,异步加载数据时只要填入数据,然后在series里根据名字对应到相应的系列就可以了。
getOrderTotal(){//获取一段时间内的订单统计 api.getOrderStatistical(this.begin, this.end,this.kId) .then(res => { if (res.data.ok && res.data.r.length) { const results = res.data.r, legends = results.map(item => ({ name: item.channelName, data: item.dateStatisticals })) this.lineChartOrder.setOption({ title: { text: '订单统计' }, legend: { data: legends.map(item => item.name) }, xAxis: { data: legends[0].data.map(item => item.date) }, series: legends.map(item => { return { type: 'line', name: item.name, data: item.data.map(item => item.count) } }) }) } }).catch(err => { // console.log(err) })但是,echarts的数据是直接merge的,所以当出现多条折线时,如果当天的数据为0,或者后台传过来的数据为空的时候,setOption的值根本就没有更新,而是直接merge了,所以这个问题就头大了。
对于这个问题的解决方法是
用getOption取到已经存在的option, 然后用
this.lineChartOrder.setOption.clear()
,清空option,最后this.lineChartOrder.setOption(option, false, false)
。这样就可以清掉了。
以下是官网异步数据加载与更新的方法,会相对简单些。
// 异步加载数据 $.get('data.json').done(function (data) { // 填入数据 myChart.setOption({ xAxis: { data: data.categories }, series: [{ // 根据名字对应到相应的系列 name: '销量', data: data.data }] });只需要将数据填充进入就可以了。
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对的支持。
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!
RTX 5090要首发 性能要翻倍!三星展示GDDR7显存
三星在GTC上展示了专为下一代游戏GPU设计的GDDR7内存。
首次推出的GDDR7内存模块密度为16GB,每个模块容量为2GB。其速度预设为32 Gbps(PAM3),但也可以降至28 Gbps,以提高产量和初始阶段的整体性能和成本效益。
据三星表示,GDDR7内存的能效将提高20%,同时工作电压仅为1.1V,低于标准的1.2V。通过采用更新的封装材料和优化的电路设计,使得在高速运行时的发热量降低,GDDR7的热阻比GDDR6降低了70%。
更新日志
- 中国武警男声合唱团《辉煌之声1天路》[DTS-WAV分轨]
- 紫薇《旧曲新韵》[320K/MP3][175.29MB]
- 紫薇《旧曲新韵》[FLAC/分轨][550.18MB]
- 周深《反深代词》[先听版][320K/MP3][72.71MB]
- 李佳薇.2024-会发光的【黑籁音乐】【FLAC分轨】
- 后弦.2012-很有爱【天浩盛世】【WAV+CUE】
- 林俊吉.2012-将你惜命命【美华】【WAV+CUE】
- 晓雅《分享》DTS-WAV
- 黑鸭子2008-飞歌[首版][WAV+CUE]
- 黄乙玲1989-水泼落地难收回[日本天龙版][WAV+CUE]
- 周深《反深代词》[先听版][FLAC/分轨][310.97MB]
- 姜育恒1984《什么时候·串起又散落》台湾复刻版[WAV+CUE][1G]
- 那英《如今》引进版[WAV+CUE][1G]
- 蔡幸娟.1991-真的让我爱你吗【飞碟】【WAV+CUE】
- 群星.2024-好团圆电视剧原声带【TME】【FLAC分轨】