国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

使用Echarts中遇到值得記錄的小案例(一)

codeGoogle / 2088人閱讀

摘要:說(shuō)到這里可能會(huì)有點(diǎn)繞,里的也是一個(gè)對(duì),高亮為,取消為,和里的表現(xiàn)效果恰恰相反。

需求部分

在開發(fā)項(xiàng)目的時(shí)候遇到一個(gè)需求,就是如何保證echarts圖表里至少顯示一個(gè)圖例的數(shù)據(jù)(也就是最后一個(gè)圖例不能變成unselected的狀態(tài))
下圖是最初加載時(shí)的畫面

不想出現(xiàn)圖例都被點(diǎn)擊取消導(dǎo)致圖表只有一個(gè)坐標(biāo)軸,太丑了

參考依據(jù)

在發(fā)帖前查閱了一些思路:

有用單選模式曲線救國(guó)的,但是就沒(méi)有辦法看到多條圖例的數(shù)據(jù)在同一個(gè)圖表里顯示

有圖例為最后一個(gè)的時(shí)候,禁用所有圖例的點(diǎn)擊事件

都不是能夠很好的解決,找到一個(gè)可以參考的代碼

var option = {
    title: {
        text: "折線圖堆疊"
    },
    tooltip: {
        trigger: "axis"
    },
    legend: {
        data:["郵件營(yíng)銷","聯(lián)盟廣告","視頻廣告","直接訪問(wèn)","搜索引擎"]
    },
    grid: {
        left: "3%",
        right: "4%",
        bottom: "3%",
        containLabel: true
    },
    toolbox: {
        feature: {
            saveAsImage: {}
        }
    },
    xAxis: {
        type: "category",
        boundaryGap: false,
        data: ["周一","周二","周三","周四","周五","周六","周日"]
    },
    yAxis: {
        type: "value"
    },
    series: [
        {
            name:"郵件營(yíng)銷",
            type:"line",
            stack: "總量",
            data:[120, 132, 101, 134, 90, 230, 210]
        },
        {
            name:"聯(lián)盟廣告",
            type:"line",
            stack: "總量",
            data:[220, 182, 191, 234, 290, 330, 310]
        },
        {
            name:"視頻廣告",
            type:"line",
            stack: "總量",
            data:[150, 232, 201, 154, 190, 330, 410]
        },
        {
            name:"直接訪問(wèn)",
            type:"line",
            stack: "總量",
            data:[320, 332, 301, 334, 390, 330, 320]
        },
        {
            name:"搜索引擎",
            type:"line",
            stack: "總量",
            data:[820, 932, 901, 934, 1290, 1330, 1320]
        }
    ]
};
myChart.setOption(option);
myChart.on("legendselectchanged", function (params) {
    let option = this.getOption();
    let select_key = Object.keys(params.selected);
    if (!params.selected[params.name]) {
        select_key.map(res => {
            option.legend[0].selected[res] = !params.selected[res];//只點(diǎn)擊了一個(gè)圖例,所以select_key里只有被選中的為false,
                                                                   //對(duì)應(yīng)的option.legend[0].selected[res]值就為true,
                                                                   //即為高亮狀態(tài),其他的都取消顯示,通俗的講就成了單選模式
        });
    } else {
        select_key.map(res => {
            option.legend[0].selected[res] = false;//先讓所有圖例下的數(shù)據(jù)顯示狀態(tài)為false
        });
        option.legend[0].selected[params.name] = true;//再讓你選中的那個(gè)圖例的顯示狀態(tài)變?yōu)閠rue
    }
    this.setOption(option)
});
分析依據(jù)

關(guān)鍵代碼就是myChart.on("legendselectchanged", function (params){...}部分,這里涉及到了echarts里如何獲取legend的點(diǎn)擊事件,但是查看文檔后沒(méi)有示例不會(huì)寫怎么辦?沒(méi)關(guān)系,用上面的示例代碼,我們把代碼里不明白的變量都打印出來(lái)分析一下例如console.log("params",params)和console.log("option",option),打印出來(lái)后,對(duì)照著官方文檔一看就清晰明了很多,這段截圖后面我會(huì)補(bǔ)上。

下面說(shuō)一下上面的這段代碼的意思,select_key是legend圖例選中狀態(tài)的對(duì)應(yīng)key-value對(duì)json,高亮的為false,取消的是true(這里和咱們理解的高亮為true是相反的),進(jìn)入if語(yǔ)句后用map將select_key中的每一個(gè)元素遍歷使得option.legend[0].selected[res]值為select_key里boolean值的相反值。

說(shuō)到這里可能會(huì)有點(diǎn)繞,option.legend[0]里的selected也是一個(gè)key-value對(duì)json,高亮為true,取消為false,和select_key里的表現(xiàn)效果恰恰相反。

所以,這段代碼的實(shí)現(xiàn)效果就是,當(dāng)圖例均為高亮?xí)rselect_key = {"a":false,"b":false,"c":false,"d":false},點(diǎn)擊b圖例,此時(shí)select_key["b"]=true,于是進(jìn)入了else代碼塊,如上面代碼注釋所寫,圖例由多變一,此時(shí)select_key = {"a":true,"b":false,"c":true,"d":true},這時(shí)候有兩種操作:

再次點(diǎn)擊b圖例后select_key = {"a":true,"b":true,"c":true,"d":true},圖例狀態(tài)均為不顯示的狀態(tài),此時(shí)代碼進(jìn)入if代碼塊,所有的圖例狀態(tài)變成相反值,于是四個(gè)圖例全部被選中,圖表顯示四條折線

點(diǎn)擊其他圖例,比如c,同理進(jìn)入else代碼塊后,所有狀態(tài)為不顯示,再給選中的c圖例重新賦值使其顯示

解決方案

OK,到這里我們就明白了上面那段代碼到底是什么意思了,所以究竟該如何實(shí)現(xiàn)我們需要的功能呢,有意思的是Object.values(params.selected)會(huì)返回一個(gè)圖例選中態(tài)的布爾值數(shù)組,相當(dāng)于重組了我們之前聲明的select_key里各項(xiàng)的value值,我們只需在這個(gè)布爾值數(shù)組里只有一個(gè)false的時(shí)候,手動(dòng)將其顯示狀態(tài)重新賦值為true即可(option.legend[0].selected[params.name] = true;)

話不多說(shuō)上代碼

                        myChart.on("legendselectchanged", function (params) {
                            let option = this.getOption();
                            let select_key = Object.keys(params.selected);
                            let select_value = Object.values(params.selected);
                            console.log("select_value",select_value,"length",select_value.length)
                            var n = 0;
                            select_value.map(res => {
                                if(!res){                
                                    n++;
                                }
                            });
                            console.log("n",n)
                            if( n ==select_value.length){   //如果最后一個(gè)圖例點(diǎn)擊后select_key里的選中態(tài)會(huì)變?yōu)閒alse,
                                                            //既有四個(gè)false,當(dāng)有4個(gè)false的時(shí)候?qū)⒆詈筮x中的圖例的實(shí)際顯示值改為true
                                option.legend[0].selected[params.name] = true;
                            }
                            this.setOption(option)
                        });

第一次寫博文總結(jié),可能有點(diǎn)表述不清,還請(qǐng)見(jiàn)諒,歡迎討論

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://m.specialneedsforspecialkids.com/yun/52778.html

相關(guān)文章

  • 使用Echarts遇到值得記錄的小案例

    摘要:說(shuō)到這里可能會(huì)有點(diǎn)繞,里的也是一個(gè)對(duì),高亮為,取消為,和里的表現(xiàn)效果恰恰相反。 需求部分 在開發(fā)項(xiàng)目的時(shí)候遇到一個(gè)需求,就是如何保證echarts圖表里至少顯示一個(gè)圖例的數(shù)據(jù)(也就是最后一個(gè)圖例不能變成unselected的狀態(tài))下圖是最初加載時(shí)的畫面showImg(https://segmentfault.com/img/bVbeDxo?w=1543&h=513); 不想出現(xiàn)圖例都被...

    wind3110991 評(píng)論0 收藏0
  • 關(guān)于Vue2值得推薦的文章 -- 五、六月份

    摘要:五六月份推薦集合查看最新的請(qǐng)點(diǎn)擊集前端最近很火的框架資源定時(shí)更新,歡迎一下。蘇幕遮燎沈香宋周邦彥燎沈香,消溽暑。鳥雀呼晴,侵曉窺檐語(yǔ)。葉上初陽(yáng)乾宿雨,水面清圓,一一風(fēng)荷舉。家住吳門,久作長(zhǎng)安旅。五月漁郎相憶否。小楫輕舟,夢(mèng)入芙蓉浦。 五、六月份推薦集合 查看github最新的Vue weekly;請(qǐng)::點(diǎn)擊::集web前端最近很火的vue2框架資源;定時(shí)更新,歡迎 Star 一下。 蘇...

    sutaking 評(píng)論0 收藏0
  • 關(guān)于Vue2值得推薦的文章 -- 五、六月份

    摘要:五六月份推薦集合查看最新的請(qǐng)點(diǎn)擊集前端最近很火的框架資源定時(shí)更新,歡迎一下。蘇幕遮燎沈香宋周邦彥燎沈香,消溽暑。鳥雀呼晴,侵曉窺檐語(yǔ)。葉上初陽(yáng)乾宿雨,水面清圓,一一風(fēng)荷舉。家住吳門,久作長(zhǎng)安旅。五月漁郎相憶否。小楫輕舟,夢(mèng)入芙蓉浦。 五、六月份推薦集合 查看github最新的Vue weekly;請(qǐng)::點(diǎn)擊::集web前端最近很火的vue2框架資源;定時(shí)更新,歡迎 Star 一下。 蘇...

    khs1994 評(píng)論0 收藏0
  • 案例 - 收藏集 - 掘金

    摘要:同行這么做使用實(shí)現(xiàn)圓形進(jìn)度條前端掘金在開發(fā)微信小程序的時(shí)候,遇到圓形進(jìn)度條的需求。實(shí)現(xiàn)也談數(shù)組去重前端掘金的數(shù)組去重是一個(gè)老生常談的話題了。百度前端技術(shù)學(xué)院自定義前端掘金一標(biāo)簽概念元素表示用戶界面中項(xiàng)目的標(biāo)題。 閑話圖片上傳 - 掘金作者:孫輝,美團(tuán)金融前端團(tuán)隊(duì)成員。15年畢業(yè)加入美團(tuán),相信技術(shù),更相信技術(shù)只是大千世界里知識(shí)的一種,個(gè)人博客: https://sunyuhui.com ...

    張金寶 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

codeGoogle

|高級(jí)講師

TA的文章

閱讀更多
最新活動(dòng)
閱讀需要支付1元查看
<