首页 前端知识 使用v-show控制Echarts模块显隐导致宽度无法控制

使用v-show控制Echarts模块显隐导致宽度无法控制

2024-04-12 20:04:53 前端知识 前端哥 762 387 我要收藏

1.需要做一个页面,里面有多个模块,根据type值的不同来控制显示哪个模块。其中有一个模块包含了Echarts图,但是这个模块使用v-show,会出现一个问题,就是Echarts图的宽会变的特别窄,class无法控制。

2.解决办法:在绘制折线图的方法内包裹一层 this.$nextTick(() => {里面是绘制的Echarts代码},加上这句话,Echarts就显示正常了

3.nextTick是啥?nextTick 是在下次 DOM 更新循环结束之后执行延迟回调,在修改数据之后立即使用 $nextTick,则可以在回调中获取更新后的 DOM。

我的理解就是nextTick方法相当于当页面渲染结束的使用再调用nextTick方法,nextTick方法能获取页面最新的dom元素

   InitEcharts () {
      this.$nextTick(() => {
        //  绘制echarts
        // let _this = this;
        let chartDom = document.getElementById("myEcharts");
        let myChart = echarts.init(chartDom);
        var data = {
          year: ['06-01', '06-02', '06-03', '06-04', '06-05'],
          legend: ['小菜蛾', '菜青虫', '菜蚜'],
          color: ['rgb(44,232,147)', 'rgb(44,160,250)', 'rgb(128,97,241)'],
          data: [
            [2, 5, 6, 9, 4], // 原材料
            [6, 12, 20, 37, 14.0,],
            [6.0, 8.0, 9.0, 30, 5.0],
          ]
        }
        var option = {
          // backgroundColor: "#000518",
          color: data.color,
          legend: {
            top: 10,
            textStyle: {
              fontSize: 14,
              color: 'rgb(255,255,255)',
              padding: [3, 0, 0, 0]
            },
            data: data.legend
          },
          tooltip: {
            trigger: 'axis',
            axisPointer: {
              label: {
                show: true,
                color: '#556677',
                borderColor: 'rgba(0,0,0,0)',
                shadowColor: 'rgba(0,0,0,0)',
                shadowOffsetY: 0
              },
              lineStyle: {
                width: 0,
              }
            }
          },
          grid: {
            left: '3%',
            right: '4%',
            bottom: '4%',
            containLabel: true
          },
          xAxis: {
            type: 'category',
            axisLabel: {
              color: 'rgb(66,214,255)'
            },
            axisLine: {
              lineStyle: {
                color: 'rgb(66,214,255)'
              },
              width: 5
            },
            axisTick: {
              show: false,
            },
            data: data.year
          },
          yAxis: {
            type: 'value',
            name: '单位:/只',
            axisLabel: {
              color: 'rgb(28,225,255)'
            },
            axisLine: {
              lineStyle: {
                color: 'rgb(255,255,255)'
              },
              width: 5
            },

            axisTick: {
              show: false,
            },
            splitLine: {
              // show:false,
              lineStyle: {
                color: 'rgb(66,214,255)'
              }
            },
          },
          series: []
        };
        for (var i = 0; i < data.legend.length; i++) {
          option.series.push({
            name: data.legend[i],
            type: 'line',
            stack: '总量',
            symbolSize: 8,
            // symbol: 'circle',
            smooth: false, // 圆滑
            lineStyle: {
              width: 3,
              shadowColor: 'rgba(158,135,255, 0.3)',
              shadowBlur: 1,
              shadowOffsetY: 1
            },
            data: data.data[i],
          })
        }
        // myChart.setOption(option);
        option && myChart.setOption(option);
        window.onresize = myChart.resize;
      })

    },

转载请注明出处或者链接地址:https://www.qianduange.cn//article/4786.html
标签
评论
发布的文章

HTML5学习笔记(二)

2024-04-21 10:04:45

HTML5 新增语义标签及属性

2024-04-21 10:04:32

大家推荐的文章
会员中心 联系我 留言建议 回顶部
复制成功!