赞
踩
需求:
1.点击某个图例,图例高亮,只显示并选中当前的图例,同时展示数据。
再次点击这个高亮的图例,则全部图例选中
2.点击其他置灰图例,则此图例高亮,再次点击后,全部选中。
实现的方式类似与于排他思想吧。
- // 1.找到实例化的图例对象 也就是dom 比如 vue 的ref
- let myChart = this.$refs.myChart.echarts;
- // 或者 echarts 官方的
- var chartDom = document.getElementById('main');
- var myChart = echarts.init(chartDom);
-
- // 其实以上都是为了找到echarts对象的实例,然后注册下面的事件
- // 如果找到了,只需要粘贴下面代码既可
-
- myChart.on("legendselectchanged", (e) => {
- const { selected, name } = e;
- const otherArr = Object.keys(selected).filter((item) => item !== name);
- const flagFalse = otherArr.every((item) => !selected[item]);
- // 1.如果除了目标图例,其他都是false,则要全选
- // 2.如果此时其他所有图例都是 true,则除目标图例之外其他图例全部不选中
- if (flagFalse) {
- // 选中所有图例
- myChart.dispatchAction({
- type: "legendAllSelect",
- });
- } else {
- // 选中变化图例
- myChart.dispatchAction({
- type: "legendSelect",
- name: name,
- });
- // 取消选中除了点击图例之外的其他图例
- otherArr.forEach(item => {
- myChart.dispatchAction({
- type: 'legendUnSelect',
- name: item
- })
- })
- }
- });
以上代码也可以直接粘贴复制到官方的示例中查看效果,无需任何代码改动,如下图。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。