echarts异步数据加载(在下拉框选择事件中异步更新数据)
接触echarts 大半年了,从不会到熟练也做过不少的图表,隔了一段时间没使用这玩意,好多东西真心容易忘了。在接触echarts这期间也没有总结什么东西,今天我就来总结一下如何在echart中异步加载数据,在实际的工作的中对数据的刷选非常常见,比如在下拉框中选择,时间选择等的一些事件中异步加载数据。一个很常见的筛选如图:
下面我就直接用代码来实现怎样在事件刷选中异步刷新数据
//路径配置 require.config({ paths: { echarts: "/Scripts/echarts-2.2.7/build/dist" } }); var MYCHART; //声明一个大写的全局变量,能不用全局的尽量就不要用全局变量 //使用 require(['echarts', 'echarts/chart/bar'], //按需加载 function (ec) { //实例dom MYCHART = ec.init(document.getElementById("main")); var option = { tooltip: { show: true }, legend: { data: ['得分'] }, xAxis: [ { type: "category", data:[''] // data:["科比", "欧文", "詹姆斯", "库里", '杜兰特', '威少', '韦德'] } ], yAxis: [ { type: "value" } ], series: [ { "name": "得分", "type": "bar", data:[''] //data:[20102, 2000, 1200, 1002, 1204, 4545, 7878] } ] } console.info(MYCHART); //位echart对象加载数据 MYCHART.setOption(option,true); loadOption(2011);//使用ajax同步加载数据 } )
其实我也很纳闷了,这个xAxis中data属性是一个数组,series中data也是一个数组,如果直接不写任何数据,在loadOption方法中,再获取MACHAT.option中会找不到series,xAxis ,option倒是能获取到,但是这个对象是空的。这让我很奇怪,所以只能先写一个空字符串了。
//ajax 异步加载配置数据项 function loadOption(year) { $.ajax({ url: '/Home/GetJson?year='+year, type: 'get', dataType: 'json', async: false, success: function (result) { if (result) { var option = MYCHART._option; //e2中感觉这个命名十分奇怪,居然要这样获取,必须先设置才有这个属性 debugger if (result.seriesData == null) { option.series[0].data = ['']; option.xAxis[0].data = [''] } else { option.series[0].data = result.seriesData; option.xAxis[0].data = result.xAxisData; } MYCHART.setOption(option,true); } }, error: function () { alert("不好意思请求失败了"); } }) }
要注意这两点
1.刚开始的时候我也很奇怪,获取option 属性居然有这样获取MYCHART._option 。在e3直接MYCHART.getOption()就可以获取到。
2.echarts图表动态刷新数据不能清空数据,这是因为多次调用option默认是合并的Merge ,文档里说设置第二个参数为true就ok ,如上MYCHART.setOption(option,true)
function yearChange(selectObj) { var year = $(selectObj).val(); loadOption(year); }
实际运行的效果图如下:
echarts图表中值得注意两点上面已经说了,一个数据动态加载数据没有清除数据,一个获取option必须先setOption才能获取到。但是我郁闷的是如果不给series 中data属性设值,xAxis中data属性设值获取到的option是一个空的object。虽然实现整个下拉选择事件动态加载数据的功能,但是代码还是得优化一下。
整个思路就是同步执行ajax加载数据,设置option中的属性。还是要注意方法调用的循序。经常会underfined地报错,debugger的时候看的很清楚。
下载地址:http://download.csdn.net/detail/kebi007/9742894
作者:张林
标题: echarts异步数据加载(在下拉框选择事件中异步更新数据)原文地址:http://blog.csdn.net/kebi007/article/details/54663620
转载随意注明出处
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构