vue使用highcharts自定義圖例點(diǎn)擊事件
本文實(shí)例為大家分享了vue使用highcharts自定義圖例點(diǎn)擊事件的具體代碼,供大家參考,具體內(nèi)容如下
highcharts圖表自帶的圖例點(diǎn)擊事件是:點(diǎn)擊某個(gè)顯示/隱藏的圖例,該圖例對應(yīng)的series就隱藏/顯示。
需求方這邊的需求是:
1、默認(rèn)全部展示所有分類
2、點(diǎn)擊某一個(gè)分類,則隱藏其他分類
3、如果再次點(diǎn)擊這個(gè)分類,則全部顯示
4、如果點(diǎn)擊了A,再點(diǎn)擊了B,則顯示A和B
于是乎只能自定義圖例點(diǎn)擊事件。
// 數(shù)據(jù)列展示/隱藏的邏輯函數(shù)
getVisibleMode(series, serieName) {
? ? var allVisible = true
? ? var allHidden = true
? ? for (let i = 0; i < series.length; i++) {
? ? ? ? if (series[i].name === serieName)
? ? ? ? ? ? continue
? ? ? ? // &= 按位運(yùn)算用法:a &= b 等價(jià)于 a = a & b (值為 0 / 1)
? ? ? ? allVisible &= series[i].visible
? ? ? ? allHidden &= (!series[i].visible)
? ? }
? ? if (allVisible && !allHidden)
? ? ? ? return 'all-visible'
? ? if (allHidden && !allVisible)
? ? ? ? return 'all-hidden'
? ? return 'other-cases'
},
// 繪制圖表的方法
drawChart(id) {
? ? let that = this // 記錄this指向,以便圖例點(diǎn)擊事件中調(diào)用方法
? ? Hightcharts.chart(id, {
? ? ? ? ...,
? ? ? ? // hightcharts對應(yīng)的配置項(xiàng)
? ? ? ? plotOptions : {
? ? ? ? ? ? series: {
? ? ? ? ? ? ? ? events : {
? ? ? ? ? ? ? ? ? ? // 圖例點(diǎn)擊事件
? ? ? ? ? ? ? ? ? ? legendItemClick : function (e) {
? ? ? ? ? ? ? ? ? ? ? ? var series = this.chart.series
? ? ? ? ? ? ? ? ? ? ? ? var mode = that.getVisibleMode(series, this.name)
? ? ? ? ? ? ? ? ? ? ? ? var enableDefault = false
? ? ? ? ? ? ? ? ? ? ? ? if (!this.visible) {
? ? ? ? ? ? ? ? ? ? ? ? ? ? enableDefault = true
? ? ? ? ? ? ? ? ? ? ? ? } else if (mode === 'all-visible') {
? ? ? ? ? ? ? ? ? ? ? ? ? ? series.forEach((serie, k) => {
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? serie.hide()
? ? ? ? ? ? ? ? ? ? ? ? ? ? })
? ? ? ? ? ? ? ? ? ? ? ? ? ? this.show()
? ? ? ? ? ? ? ? ? ? ? ? } else if (mode === 'all-hidden') {
? ? ? ? ? ? ? ? ? ? ? ? ? ? series.forEach((serie, k) => {
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? serie.show()
? ? ? ? ? ? ? ? ? ? ? ? ? ? })
? ? ? ? ? ? ? ? ? ? ? ? } else {
? ? ? ? ? ? ? ? ? ? ? ? ? ? enableDefault = true
? ? ? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? ? ? ? ? return enableDefault
? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? }
? ? ? ? ? ? }
? ? ? ? }
? ? })
}代碼在vue環(huán)境下運(yùn)行,需要注意圖例點(diǎn)擊事件方法中this指向問題。
預(yù)覽效果圖:

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Vue多頁面配置打包性能優(yōu)化方式(解決加載包太大加載慢問題)
這篇文章主要介紹了Vue多頁面配置打包性能優(yōu)化方式(解決加載包太大加載慢問題),具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-01-01
vue 標(biāo)簽屬性數(shù)據(jù)綁定和拼接的實(shí)現(xiàn)方法
這篇文章主要介紹了vue 標(biāo)簽屬性數(shù)據(jù)綁定和拼接的實(shí)現(xiàn)方法,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2018-05-05
詳解Vue項(xiàng)目中實(shí)現(xiàn)錨點(diǎn)定位
這篇文章主要介紹了Vue項(xiàng)目中實(shí)現(xiàn)錨點(diǎn)定位,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-04-04
vue-cli創(chuàng)建項(xiàng)目及項(xiàng)目結(jié)構(gòu)解析
上一篇我們安裝了vue-cli,接下來我們就使用該腳手架進(jìn)行創(chuàng)建項(xiàng)目,這篇文章主要介紹了vue-cli創(chuàng)建項(xiàng)目以及項(xiàng)目結(jié)構(gòu)的相關(guān)資料,需要的朋友可以參考下面文章的具體內(nèi)容2021-10-10
在vue中動(dòng)態(tài)修改css其中一個(gè)屬性值操作
這篇文章主要介紹了在vue中動(dòng)態(tài)修改css其中一個(gè)屬性值操作,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-12-12
Vue3之使用js實(shí)現(xiàn)動(dòng)畫示例解析
這篇文章主要為大家介紹了Vue3之使用js實(shí)現(xiàn)動(dòng)畫示例解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-04-04
vue修改打包配置如何實(shí)現(xiàn)代碼打包后的自定義命名
這篇文章主要介紹了vue修改打包配置如何實(shí)現(xiàn)代碼打包后的自定義命名,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-05-05

