echarts點(diǎn)擊事件多次觸發(fā)解決

原地址:https://blog.csdn.net/shiyanfangye/article/details/81910218

解決方式:myCharts.off('click')

最近寫(xiě)vue項(xiàng)目時(shí)用到echarts做個(gè)小功能,點(diǎn)擊餅狀圖的每一塊,生成新的柱狀圖,同時(shí)要給柱狀圖綁定點(diǎn)擊事件,彈出每一條柱狀數(shù)據(jù)詳情。

做完后發(fā)現(xiàn)一個(gè)問(wèn)題,第一次點(diǎn)擊柱狀圖時(shí)點(diǎn)擊事件只觸發(fā)一次,點(diǎn)擊餅狀圖第二次生成柱狀圖后,柱狀圖的點(diǎn)擊事件就會(huì)觸發(fā)兩次,以此類推……最后越來(lái)越多。

代碼如下:

```

// 畫(huà)餅狀圖

drawPie() {

? ? ? ? let myCharts = Echarts.init(document.getElementById('pie'))

? ? ? ? let option = {

? ? ? ? ? title: {

? ? ? ? ? ? text: '所有會(huì)員',

? ? ? ? ? ? left: 'center'

? ? ? ? ? },

? ? ? ? ? tooltip: {

? ? ? ? ? ? trigger: 'item'

? ? ? ? ? },

? ? ? ? ? legend: {

? ? ? ? ? ? bottom: 10,

? ? ? ? ? ? left: 'center',

? ? ? ? ? ? data: ['注冊(cè)會(huì)員', '超級(jí)合伙人', '超級(jí)合伙人-戰(zhàn)略合作', '網(wǎng)點(diǎn)']

? ? ? ? ? },

? ? ? ? ? series: [

? ? ? ? ? ? {

? ? ? ? ? ? ? type: 'pie',

? ? ? ? ? ? ? center: ['50%', '50%'],

? ? ? ? ? ? ? selectedMode: 'single',

? ? ? ? ? ? ? data: this.allMember

? ? ? ? ? ? }

? ? ? ? ? ]

? ? ? ? }

? ? ? ? myCharts.setOption(option)

? ? ? ? // 點(diǎn)擊餅狀圖的每一塊生成新的數(shù)據(jù)

? ? ? ? myCharts.on('click', (params) => {

? ? ? ? ? this.getData(params.name)

? ? ? ? })

? ? ? }

// 獲取數(shù)據(jù),數(shù)據(jù)時(shí)請(qǐng)求接口動(dòng)態(tài)獲取的

getData (name) {

? ? ? ? let url = '/api/user/top/role?roleId=' + name

? ? ? ? this.$root.loading.show()

? ? ? ? this.$http.get(url).then(res => {

? ? ? ? ? this.$root.loading.hide()

? ? ? ? ? if (res.data.success) this.chartsData = res.data.data.content

? ? ? ? ? else this.$message.error()

? ? ? ? ? this.drawBar(name, this.chartsData)

? ? ? ? })

? ? ? }

// 畫(huà)柱狀圖

drawTopten(name, val) {

? ? ? ? let myCharts = Echarts.init(document.getElementById('bar'))

? ? ? ? myCharts.off('click') // 這里很重要!?。?/p>

? ? ? ? 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'

? ? ? ? ? },

? ? ? ? ? tooltip: {

? ? ? ? ? ? trigger: 'axis',

? ? ? ? ? ? axisPointer: {

? ? ? ? ? ? ? type: 'shadow'

? ? ? ? ? ? }

? ? ? ? ? },

? ? ? ? ? legend: {

? ? ? ? ? ? bottom: 10,

? ? ? ? ? ? left: 'center',

? ? ? ? ? ? data: ['推廣用戶', '總收益/元']

? ? ? ? ? ? // selectedMode: false

? ? ? ? ? },

? ? ? ? ? toolbox: {

? ? ? ? ? ? show: true,

? ? ? ? ? ? orient: 'vertical',

? ? ? ? ? ? left: 'right',

? ? ? ? ? ? top: 'center'

? ? ? ? ? },

? ? ? ? ? calculable: true,

? ? ? ? ? xAxis: [

? ? ? ? ? ? {

? ? ? ? ? ? ? type: 'category',

? ? ? ? ? ? ? name: '昵稱',

? ? ? ? ? ? ? axisTick: {show: false},

? ? ? ? ? ? ? data: x

? ? ? ? ? ? }

? ? ? ? ? ],

? ? ? ? ? yAxis: [

? ? ? ? ? ? {

? ? ? ? ? ? ? type: 'value'

? ? ? ? ? ? }

? ? ? ? ? ],

? ? ? ? ? series: [

? ? ? ? ? ? {

? ? ? ? ? ? ? name: '推廣用戶',

? ? ? ? ? ? ? type: 'bar',

? ? ? ? ? ? ? barGap: 0,

? ? ? ? ? ? ? data: y1

? ? ? ? ? ? },

? ? ? ? ? ? {

? ? ? ? ? ? ? name: '總收益/元',

? ? ? ? ? ? ? type: 'bar',

? ? ? ? ? ? ? data: y2

? ? ? ? ? ? }

? ? ? ? ? ]

? ? ? ? }

? ? ? ? myCharts.on('click', (e) => {

? ? ? ? ? alert(111) // 如果不加off事件,就會(huì)疊加觸發(fā)

? ? ? ? })

? ? ? ? myCharts.setOption(option)

? ? ? }

```

其中重點(diǎn)就是,在畫(huà)觸發(fā)點(diǎn)擊事件的柱狀圖時(shí),首先要加上一個(gè)off事件: myCharts.off('click')

看過(guò)其他的clear方法,或者在setOption時(shí)加上第二個(gè)參數(shù)true其實(shí)都是沒(méi)用的。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 第一部分 HTML&CSS整理答案 1. 什么是HTML5? 答:HTML5是最新的HTML標(biāo)準(zhǔn)。 注意:講述HT...
    kismetajun閱讀 28,809評(píng)論 1 45
  • rljs by sennchi Timeline of History Part One The Cognitiv...
    sennchi閱讀 7,854評(píng)論 0 10
  • 我們總是試圖用最快的方法,去完成某個(gè)任務(wù)。然而總是在不停的找新的方法(一直找到疲憊),而忘了事情的根本(所帶來(lái)的樂(lè)趣)。
    你大爺?shù)?閱讀 179評(píng)論 0 0
  • 重寫(xiě)你的自我評(píng)語(yǔ) 我擁有自信是在參加工作三四年之后。從上學(xué)時(shí)代到剛工作那幾年,整個(gè)人都是自卑的,在選拔上新崗位后,...
    麗麗_8228閱讀 204評(píng)論 0 1
  • 效率問(wèn)題 2016年7月2日 在你動(dòng)手之前,你通常擁有的只是一個(gè)大體的想法而已。這個(gè)想法的價(jià)值通常非常有限,真正重...
    觀察者_(dá)王動(dòng)閱讀 206評(píng)論 5 0

友情鏈接更多精彩內(nèi)容