不知道大家用ECharts時有沒有遇到過這種需求:ECharts畫出的圖有多種數據,並且可以點擊圖例控制數據的展示和隱藏,如果修改了查詢條件,圖也會重新生成,但是之前選擇的圖例狀態又回到了初始的狀態!這種情況下,如何保證圖片重新生成的時候記錄圖例的選擇狀態呢?研究了一下ECharts的API文檔,想出了如下解決辦法:
設定圖例名為name,初始化option的時候代碼為:
//初始化參數
var legendOptions={a:{color:'red',selected: true}, b:{color:'green', selected: true}, c:{color:'blue', selected: false}};
//ajax數據
data = {a:[1,2,1,2,1], b:[2,1,2,1,2], c:[1,1,2,2,1]};
for(var name in data)
option.legend.data.push(name);
option.legend.selected[name]=legendOptions[name].selected;//(這里是默認選擇狀態)
......
myChart = ec.init(...);
myChart.setOption(option);
以上為一開始的代碼,每次重新生成圖表都會初始化legend選擇狀態,可以做如下修改
在設置option.legend.selected[name]的時候處理一下
if(myChart){
option.legend.selected[name]=myChart.component.legend.isSelected(name);//這里獲取之前的選擇狀態
}else{
option.legend.selected[name]=legendOptions[name].selected;//(這里是默認選擇狀態)
}
其他的按照常規來就行了,如果大家有更好的解決方案,可以互相探討一下