echarts學(xué)習(xí)之legend點(diǎn)擊事件解讀
echarts legend點(diǎn)擊事件
首先,明確本篇文章的重點(diǎn),主要有三個(gè):
1. 給legend添加點(diǎn)擊事件
2. 禁用legend點(diǎn)擊事件的默認(rèn)行為(類(lèi)型checkbox多選框)
3. 解決點(diǎn)擊事件重復(fù)觸發(fā)問(wèn)題
問(wèn)題一
let myCharts = Echarts.init(document.getElementById('bar'))
let x = []
let y1 = []
let y2 = []
let idList = []
val.forEach(e => {
? x.push(e.name)
? y1.push(e.invitationNum)
? y2.push(e.totalMoney / 100)
? idList.push(e.id)
}) // 這些都是自己做的一些數(shù)據(jù)處理,可以忽略
let option = {
? title: {
? ? text: name + '前十用戶',
? ? left: 'center'
? },
? ...其他代碼
}
myCharts.on('legendselectchanged', (e) => {
? alert('點(diǎn)擊了') // 如果不加off事件,就會(huì)疊加觸發(fā)
})
myCharts.setOption(option)問(wèn)題二
myChart.on('legendselectchanged', function (params) {
? ? myChart.setOption({
? ? ? ? legend:{selected:{[params.name]: true}}
? ? })
? ? console.log('點(diǎn)擊了', params.name);
? ? // do something
});問(wèn)題三
let myCharts = Echarts.init(document.getElementById('bar'))
myCharts.off('legendselectchanged') //解決重復(fù)觸發(fā)
...
...
myCharts.on('legendselectchanged', (e) => {
? alert('點(diǎn)擊了') // 如果不加off事件,就會(huì)疊加觸發(fā)
})
myCharts.setOption(option)Echarts自己控制legend點(diǎn)擊事件
先看需求

現(xiàn)在想實(shí)現(xiàn)的 情況是
- 一進(jìn)去頁(yè)面,所有的 Echarts 中 legend 的所有選項(xiàng)都是默認(rèn)選中的狀態(tài)(這是 Echarts 默認(rèn)的)
- 然后當(dāng)“9”號(hào)標(biāo)識(shí),也就是“一#斗”點(diǎn)亮?xí)r,與之相對(duì)應(yīng)的“1、2、3”倉(cāng)位,即“石灰石、污泥球、生白”也必須點(diǎn)亮,
- 然后 “9”號(hào)點(diǎn)亮之后 “1、2、3”號(hào)倉(cāng)位也可以自己控制自己的 點(diǎn)亮還是關(guān)閉,
- 然后當(dāng)“9”號(hào)再次從關(guān)閉變成點(diǎn)亮的狀態(tài)時(shí),“1、2、3” 會(huì)再次點(diǎn)亮。
var dou1_legend_flag = false;
myChart.on('legendselectchanged', function (params) {
var option = this.getOption();
//當(dāng)前echarts圖例選項(xiàng)
var select_key = Object.keys(params.selected);
//當(dāng)前圖例的選項(xiàng)是否選中 選中為true 未選中為false
var select_value = Object.values(params.selected);
if (option.legend[0].selected.hasOwnProperty("1#斗")) {
if (option.legend[0].selected["1#斗"] == true) {
if (!dou1_legend_flag) {
// 控制legend 的顯示和隱藏 直接控制 selected 中對(duì)應(yīng)名稱(chēng)的真假值就可以
option.legend[0].selected[option.legend[0].data[0]] = true;
option.legend[0].selected[option.legend[0].data[1]] = true;
option.legend[0].selected[option.legend[0].data[2]] = true;
myChart.setOption(option);
dou1_legend_flag = true;
}
} else {
dou1_legend_flag = false;
}
}
});
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
微信小程序--獲取用戶地理位置名稱(chēng)(無(wú)須用戶授權(quán))的方法
這篇文章主要介紹了微信小程序-獲取用戶地理位置名稱(chēng)(無(wú)須用戶授權(quán))的方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-04-04
js實(shí)現(xiàn)簡(jiǎn)單點(diǎn)贊操作
這篇文章主要為大家詳細(xì)介紹了js實(shí)現(xiàn)簡(jiǎn)單點(diǎn)贊操作,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-03-03
nest.js 使用express需要提供多個(gè)靜態(tài)目錄的操作方法
這篇文章主要介紹了nest.js 使用express需要提供多個(gè)靜態(tài)目錄的操作,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-10-10
Bootstrap 設(shè)置datetimepicker在屏幕上面彈出設(shè)置方法
datetimepicker默認(rèn)是在輸入框下面彈出的,但是遇到輸入框在屏幕下面時(shí),日期選擇框會(huì)有一部分在屏幕下面,顯示不了,因此需要能夠從上面彈出,下面小編給大家介紹下Bootstrap 設(shè)置datetimepicker在屏幕上面彈出的設(shè)置方法2017-03-03
js實(shí)現(xiàn)ArrayList功能附實(shí)例代碼
ArrayList功能想必大家都有所了解吧,本文使用js實(shí)現(xiàn)ArrayList功能并附實(shí)例代碼,想學(xué)習(xí)的朋友可以看看2014-10-10
JavaScript日期庫(kù)date-fn.js使用方法解析
這篇文章主要介紹了JavaScript日期庫(kù)date-fn.js使用方法解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-09-09

