在设置多个legend时,对每个legend设置selected,只有第一个legend的selected单击一次就能变换状态,后面的要变换状态需要单击两次
为了方便测试,直接修改 官网上的代码 Echarts 3,可以直接把这部分代码替换进去测试,用谷歌和IE均测试过。
官网链接:http://echarts.baidu.com/demo.html#candlestick-brush
官网code:
legend: {
bottom: 10,
left: 'center',
data: ['Dow-Jones index', 'MA5', 'MA10', 'MA20', 'MA30']
},
为了方便测试,只需要将下面的code替换掉官网的code就行了(注意标点符号)。
code1:
legend: [{
selected:{'MA5':false},
bottom: 10,
left: 'center',
data: ['Dow-Jones index', 'MA5', 'MA10', 'MA20', 'MA30']
},
{selected:{'Volumn':false},
data:['Volumn']
}],
单击legend[0]中的灰色图例,单击一次就能更改状态,单击legend[1]中的灰色图例,需要单击两次才能更改状态,为了找出原因,更改顺序:
code2:
legend: [
{selected:{'Volumn':false},
data:['Volumn']
},
{
selected:{'MA5':false},
bottom: 10,
left: 'center',
data: ['Dow-Jones index', 'MA5', 'MA10', 'MA20', 'MA30']
}],
同样:单击legend[0]中的灰色图例,单击一次就能更改状态,但是单击legend[1]中的灰色图例,需要单击两次才能更改状态。
code2跟code1对比,只是更改了legend里面的两个子项的顺序,但是结果却不一样。
希望两个或者多个legend都能实现单击一次就能更改状态的效果
9条答案
按热度按时间zpqajqem1#
+1
7eumitmz2#
我也遇到这个问题了,还没修复吗?
jpfvwuh43#
同上,同样遇到这个问题
hfsqlsce4#
+1
eufgjt7s5#
+1
kuarbcqp6#
我也遇到了这个问题。请问目前有啥解决方案吗
2ul0zpep7#
天哪。 2022年遇到的问题原来在2017年就存在了
pkln4tw68#
天哪。 2022年遇到的问题原来在2017年就存在了
记得这个问题好像是处在多组legend时,且当前legend不是第一次点击时会出现,可以尝试维护一个一个点击过的legend name list,判断一下,是否被点击过,然后再决定是否dispatchActipn,和具体处罚哪个action,当legendSelectAll时,再清空维护的缓存数据
我当时应该是这么解决的,我的场景更复杂,是要legend点击效果跟highcharts那种的
仅供参考
hec6srdp9#
楼上说的对,是在分组的时候第二组、第三组、、、第n组被禁止的会出现这个问题,解决方法是:
在第一组的selected里面先进行声明,在当前组再进行一次声明就可以了。目前使用版本@5.4.0
如下:重复声明Direct即可
`
legend: [
{
top: '10',
data: ['Email', 'Union Ads'],
selected: {
'Email': false,
'Direct': false
},
},
{
top: 30,
data: ['Video Ads', 'Direct', 'Search Engine'],
selected: {
Direct: false,
},
}
]
下面是动态legend时遍历的省事方法:
legend.forEach((item) => {
legend[0]['selected'] = {
...(legend[0]['selected'] || {}),
...(item.selected || {}),
};
});
`