官网动态数据实例中展示了数据动态变化的案例,这个如何移植到Angular2中去呢?首先要读懂官网的这个例子,不然会有坑。
官网案例分析
首先,数据处理和图表生成最好放在一起,根据官网的例子,在设置定时器之前,对应的配置项中已经设定好10个数据,而定时器,只是向对应的配置项中不断删除第一个数据,然后push新的数据。官网原话如下:
设置图表实例的配置项以及数据,万能接口,所有参数和数据的修改都可以通过
setOption
完成,ECharts 会合并新的参数和数据,然后刷新图表。如果开启动画的话,ECharts 找到两组数据之间的差异然后通过合适的动画去表现数据的变化。
其次,myChart
这个变量要设置为全局变量,不然每次echarts会重新复制图表,而不是像官网例子一样,呈现出向左推送的效果。
1 | <!DOCTYPE html> |
移植到ANgular2
首先创建一个dynamic-line.component.ts
文件,@Component
装饰器和import按照自己需求配置好。在class中先定义一些全局变量,并配置好echarts的option:
1 | url:any; |
然后从外部传入url,以供echarts读取数据和刷新:
1 | any; () url: |
设置从后端获取数据的函数(获取数据后,因为后端数据有点乱,为了方便,我把数据重新处理了一下,定义了一个setMyoption()
的函数,把处理后的数据,用json对象的形式存放在myoption
这个变量中):
1 | getUrlData() { |
根据数据配置legend,因为legend不需要刷新,所以独立成单独的函数:
1 | setLegend() { |
设置配置option中x轴数据和series数据:
1 | setDataToOption() { |
设置生成echarts的函数:
1 | createCharts() { |
接下来在ngAfterViewInit
中调用相关函数,让页面加载完后显示echarts:
1 | ngAfterViewInit() { |
下面就设置动态推送数据的函数:
1 | setDynamicData() { |