需求:
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
})
})
}
});
以上代码也可以直接粘贴复制到官方的示例中查看效果,无需任何代码改动,如下图。