当前位置:   article > 正文

echarts异步数据加载(在下拉框选择事件中异步更新数据)_option.series[0].data = arr[0]; option.series[1].d

option.series[0].data = arr[0]; option.series[1].data = arr[1];

接触echarts 大半年了,从不会到熟练也做过不少的图表,隔了一段时间没使用这玩意,好多东西真心容易忘了。在接触echarts这期间也没有总结什么东西,今天我就来总结一下如何在echart中异步加载数据,在实际的工作的中对数据的刷选非常常见,比如在下拉框中选择,时间选择等的一些事件中异步加载数据。一个很常见的筛选如图:

下面我就直接用代码来实现怎样在事件刷选中异步刷新数据

  1. //路径配置
  2. require.config({
  3. paths: {
  4. echarts: "/Scripts/echarts-2.2.7/build/dist"
  5. }
  6. });
  7. var MYCHART; //声明一个大写的全局变量,能不用全局的尽量就不要用全局变量
  8. //使用
  9. require(['echarts',
  10. 'echarts/chart/bar'], //按需加载
  11. function (ec)
  12. {
  13. //实例dom
  14. MYCHART = ec.init(document.getElementById("main"));
  15. var option = {
  16. tooltip: {
  17. show: true
  18. },
  19. legend: {
  20. data: ['得分']
  21. },
  22. xAxis: [
  23. {
  24. type: "category",
  25. data:['']
  26. // data:["科比", "欧文", "詹姆斯", "库里", '杜兰特', '威少', '韦德']
  27. }
  28. ],
  29. yAxis: [
  30. {
  31. type: "value"
  32. }
  33. ],
  34. series: [
  35. {
  36. "name": "得分",
  37. "type": "bar",
  38. data:['']
  39. //data:[20102, 2000, 1200, 1002, 1204, 4545, 7878]
  40. }
  41. ]
  42. }
  43. console.info(MYCHART);
  44. //位echart对象加载数据
  45. MYCHART.setOption(option,true);
  46. loadOption(2011);//使用ajax同步加载数据
  47. }
  48. )


其实我也很纳闷了,这个xAxis中data属性是一个数组,series中data也是一个数组,如果直接不写任何数据,在loadOption方法中,再获取MACHAT.option中会找不到series,xAxis ,option倒是能获取到,但是这个对象是空的。这让我很奇怪,所以只能先写一个空字符串了。

 

  1. //ajax 异步加载配置数据项
  2. function loadOption(year)
  3. {
  4. $.ajax({
  5. url: '/Home/GetJson?year='+year,
  6. type: 'get',
  7. dataType: 'json',
  8. async: false,
  9. success: function (result) {
  10. if (result)
  11. {
  12. var option = MYCHART._option; //e2中感觉这个命名十分奇怪,居然要这样获取,必须先设置才有这个属性
  13. debugger
  14. if (result.seriesData == null) {
  15. option.series[0].data = [''];
  16. option.xAxis[0].data = ['']
  17. }
  18. else {
  19. option.series[0].data = result.seriesData;
  20. option.xAxis[0].data = result.xAxisData;
  21. }
  22. MYCHART.setOption(option,true);
  23. }
  24. },
  25. error: function ()
  26. {
  27. alert("不好意思请求失败了");
  28. }
  29. })
  30. }

 

要注意这两点

 

1.刚开始的时候我也很奇怪,获取option 属性居然有这样获取MYCHART._option 。在e3直接MYCHART.getOption()就可以获取到。

2.echarts图表动态刷新数据不能清空数据,这是因为多次调用option默认是合并的Merge ,文档里说设置第二个参数为true就ok ,如上MYCHART.setOption(option,true)

 

下拉框选择年份事件:

 

  1. function yearChange(selectObj)
  2. {
  3. var year = $(selectObj).val();
  4. loadOption(year);
  5. }


实际运行的效果图如下:

 


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

转载随意注明出处

有兴趣的可以关注一下我的公众号,每天分享一篇it技术、面试技巧、技术感想的文章

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Monodyee/article/detail/576111
推荐阅读
相关标签
  

闽ICP备14008679号