模仿echarts实现图例点击事件

<ul>
  <li v-for="(item,index) in legend2Data"  class="hoverObj" @click="dispatchSth(item.name,index)" :key="item.name">
    <span class="bgLi hoverObj"  :style="{background: item.show ? item.color : '#ccc'}" ></span>
    <span>{{item.name}}</span>
  </li>
</ul>
<div id="chart2Cont"></div>
export default{
  name:'chart1',
  data(){
    return {
      legend2Data:[{name:'aa',show:false,color:'#ff0000'}],//第一列雷达图图例数据
      clickLengedName:[]
   }
  },
mounted(){
this.chart2=echarts.init(document.getElementById('chart2Cont'));  //图标ID
},
  methods:{    
dispatchSth(name,index){
  this.legendToGray(name,index,this.clickLengedName,this.legend2Data);  //将图例置灰
  this.chart2.dispatchAction({
    type:'legendToggleSelect',
    name:name
  })
},
legendToGray(name,index,clickLengedName,legendData){
  if(clickLengedName.length){

    let hasIndex=clickLengedName.findIndex(item => {
      return item.name==name;
    })

    if(hasIndex== -1){
      // console.log('循环后没有该项则置灰:======'+2);
      clickLengedName.push({
        name:name,
        index:index
      })
      legendData[index].show=false;
    }else{
      // console.log('循环后有该项则取消置灰:======'+1);
      clickLengedName.splice(hasIndex,1);
      legendData[index].show=true;
    }
  }else{
    //直接置灰
    //console.log('直接置灰:======'+0);
    clickLengedName.push({
      name:name,
      index:index
    })
    legendData[index].show=false;

  }
},
  }
}
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值