Ehcarts+Vue+ElementUI进阶使用笔记

Ehcarts可以实现很多炫酷的数据可视化效果,但是当需求变得复杂时,例如需要结合Vue和Element的各种组件一起使用时,难度会指数上升。
今天到了一个很有意思的案例:
需求:使用Element的el-tabs标签页,但是具体会有多少标签页不确定,要根据后台传来的数据量动态渲染,在每一个标签页里,要渲染两个echarts树形图。
难点:1、动态渲染出若干个el-tab-pane;2、为一个标签绑定一个点击事件,使得点击对应标签时,可以渲染出当前标签对应的echarts;3、由于直到数据传到之前都不确定有多少标签页,也不知道有多少echarts要渲染,必须动态生成div并为每一个div动态绑定id

解决方案:
1、在created中进行数据检索,获得数据表;
2、获得数据表后,对el-tab-pane进行v-for循环;
3、根据v-for中item的主键动态生成div的主键,这里采用如下方式:

<!--标签-->
<div v-show="show01" :id="gernerateId('left' + '0')">
</div>
// js
gernerateId: function(index) {
     
      return index
    },

这里之所以使用函数而不是直接绑定,是为了应付id更加复杂、需要处理的情形
4、在渲染函数里传入参数,完成渲染

getChart(data) {
     
      const echarts = require('echarts')
      const myChart = echarts.init(document.getElementById(data + '1'))
      myChart.setOption(this.option, true)
      myChart.resize()
    },

5、为了避免加载不成功,使用this.$nextTick执行

this.$nextTick(() => {
     
              this.getChart(data)
            })

6、el-tabs使用小记
可能会遇到需要适配页面高度动态设定el-tabs整体高度的情况,但是element并没有为这个组件显式提供可修改的属性,这里我们就通过一些比较暴力的css手法实现动态设置高度的效果
01、为el-tabs套一个div,并使其class=‘wdd’。(必须是wdd,渲染以后自动生成的类名也是这个)
02、在style标签对中添加如下代码:

.wdd, .el-tabs--left, .el-tabs__header.is-left{
     
    height: 93%;
  }

7、为Y轴添加单位:

yAxis: {
     
          type: 'value',
          name: '%'
        },

8、个人认为比较好看的线条配色

itemStyle: {
     
              normal: {
     
                lineStyle: {
     
                  color: {
     

                    type: 'linear',

                    x: 0,

                    y: 0,

                    x2: 1,

                    y2: 0,

                    colorStops: [{
     

                      offset: 0, color: '#4C84FF' // 0% 处的颜色

                    }, {
     

                      offset: 1, color: '#F07AAD' // 100% 处的颜色

                    }],

                    globalCoord: false // 缺省为 false

                  },
                  width: 2,
                  opacity: 0.2
                }
              }
            },

你可能感兴趣的:(vue前端,vue,javascript,数据可视化)