blob: 024315708a35511f71e1bd51225290ca7a7f5ade [file] [log] [blame]
(window.webpackJsonp=window.webpackJsonp||[]).push([[84],{378:function(n,t,e){"use strict";e.r(t),t.default="# 异步数据的加载与动态更新\n\n## 异步加载\n\n[入门示例](${lang}/get-started)中的数据是在初始化后`setOption`中直接填入的,但是很多时候可能数据需要异步加载后再填入。`ECharts` 中实现异步数据的更新非常简单,在图表初始化后不管任何时候只要通过 jQuery 等工具异步获取数据后通过 `setOption` 填入数据和配置项就行。\n\n```js\nvar myChart = echarts.init(document.getElementById('main'));\n\n$.get('data.json').done(function(data) {\n // data 的结构:\n // {\n // categories: [\"衬衫\",\"羊毛衫\",\"雪纺衫\",\"裤子\",\"高跟鞋\",\"袜子\"],\n // values: [5, 20, 36, 10, 10, 20]\n // }\n myChart.setOption({\n title: {\n text: '异步数据加载示例'\n },\n tooltip: {},\n legend: {},\n xAxis: {\n data: data.categories\n },\n yAxis: {},\n series: [\n {\n name: '销量',\n type: 'bar',\n data: data.values\n }\n ]\n });\n});\n```\n\n或者先设置完其它的样式,显示一个空的直角坐标轴,然后获取数据后填入数据。\n\n```js\nvar myChart = echarts.init(document.getElementById('main'));\n// 显示标题,图例和空的坐标轴\nmyChart.setOption({\n title: {\n text: '异步数据加载示例'\n },\n tooltip: {},\n legend: {\n data: ['销量']\n },\n xAxis: {\n data: []\n },\n yAxis: {},\n series: [\n {\n name: '销量',\n type: 'bar',\n data: []\n }\n ]\n});\n\n// 异步加载数据\n$.get('data.json').done(function(data) {\n // 填入数据\n myChart.setOption({\n xAxis: {\n data: data.categories\n },\n series: [\n {\n // 根据名字对应到相应的系列\n name: '销量',\n data: data.data\n }\n ]\n });\n});\n```\n\n如下:\n\n<md-example src=\"doc-example/tutorial-async\"></md-example>\n\nECharts 中在更新数据的时候需要通过`name`属性对应到相应的系列,上面示例中如果`name`不存在也可以根据系列的顺序正常更新,但是更多时候推荐更新数据的时候加上系列的`name`数据。\n\n## loading 动画\n\n如果数据加载时间较长,一个空的坐标轴放在画布上也会让用户觉得是不是产生 bug 了,因此需要一个 loading 的动画来提示用户数据正在加载。\n\nECharts 默认有提供了一个简单的加载动画。只需要调用 [showLoading](api.html#echartsInstance.showLoading) 方法显示。数据加载完成后再调用 [hideLoading](api.html#echartsInstance.hideLoading) 方法隐藏加载动画。\n\n```js\nmyChart.showLoading();\n$.get('data.json').done(function (data) {\n myChart.hideLoading();\n myChart.setOption(...);\n});\n```\n\n效果如下:\n\n<md-example src=\"doc-example/tutorial-loading\"></md-example>\n\n## 数据的动态更新\n\nECharts 由数据驱动,数据的改变驱动图表展现的改变,因此动态数据的实现也变得异常简单。\n\n所有数据的更新都通过 [setOption](~api.html#echartsInstance.setOption)实现,你只需要定时获取数据,[setOption](~api.html#echartsInstance.setOption) 填入数据,而不用考虑数据到底产生了那些变化,ECharts 会找到两组数据之间的差异然后通过合适的动画去表现数据的变化。\n\n具体可以看下面示例:\n\n<md-example src=\"doc-example/tutorial-dynamic-data\"></md-example>\n"}}]);