echarts的資料更新使用setOption來實作的。
官網的解釋是這樣的:
設定圖表執行個體的配置項以及資料,萬能接口,所有參數和資料的修改都可以通過 setOption 完成,ECharts 會合并新的參數和資料,然後重新整理圖表。如果開啟動畫的話,ECharts 找到兩組資料之間的差異然後通過合适的動畫去表現資料的變化。
是以我們在希望資料實時更新的時間,使用setOption即可。
但是setOption會導緻圖表及時更新。
及時更新在通常情況下是沒有問題,但是和dataZoom縮放元件一起使用的話。每次的setOption都會将以前的dataZoom進行重置。
比如,現在的dataZoom的初始位置為80-100,手動縮放到40-60,此時使用setOption的話,dataZoom會瞬間回到80-100的位置,即回到重新設定的位置。
這樣并不是我們所期望的效果,我們希望得到的是,資料的更新并不影響我本次的縮放,即setOption不會影響我目前的縮放位置。
解決方法
echarts3.0以上的setOption中有可選配置參數。
參數:
調用方式:
chart.setOption(option, notMerge, lazyUpdate);
或者
chart.setOption(option, {
notMerge: ...,
lazyUpdate: ...,
silent: ...
});
- option
圖表的配置項和資料,具體見配置項手冊。
- notMerge
可選,是否不跟之前設定的 option 進行合并,預設為 false,即合并。
- lazyUpdate
可選,在設定完 option 後是否不立即更新圖表,預設為 false,即立即更新。
- silent
可選,阻止調用 setOption 時抛出事件,預設為 false,即抛出事件。
其中的lazyUpdate參數就是我們的所需要的
++可選,在設定完 option 後是否不立即更新圖表,預設為 false,即立即更新。++
完整的配置參數
chart.setOption(option, {
false,
true,
false
});