• vue 动态获取div宽高有时候为0的情况


     项目背景:

      需要使用echarts进行图表展示。由于div宽高是不固定的,因此需要先获取父级的宽高再把值赋予到图表的div中。

      需要使用 this.$nextTick(() => {    });方法,在mounted中,保证DOM渲染完全后,在进行echarts初始化。

    <!--wifi数据采集-->
    <template>
      <div class="wifiCollectCtrl">
        <div id="wifiCollectID"></div>
      </div>
    </template>
    
    <script>
      import echarts from 'echarts';
    
      export default {
        name: "wifiCollect",
        props: {
          className: {type: String, default: 'chart'},
          id: {type: String, default: 'wifiCollectID'},
    
        },
        data() {
          return {
            chart: null,
            seriesData: '',
            xAxisTxt: '',
            color: [
              '#3D89FE', '#9bca62', '#2ec7c9', '#b6a2de', '#5ab1ef',
              '#8d98b3', '#e5cf0d', '#97b552', '#95706d', '#dc69aa',
              '#07a2a4', '#9a7fd1', '#588dd5', '#f5994e', '#c05050',
              '#59678c', '#c9ab00', '#7eb00a', '#6f5553', '#c14089'
            ]
          };
        },
        mounted() {
          this.$nextTick(() => { //使用nextTick为了保证dom元素都已经渲染完毕
            this.initChart();
          });
        },
        beforeDestroy() {
          if (!this.chart) {
            return
          }
          this.chart.dispose();
          this.chart = null;
        },
        created() {
    
        },
        methods: {
          initChart() {
            $("#wifiCollectID").width($(".wifiCollectCtrl").width());
            $("#wifiCollectID").height($(".wifiCollectCtrl").height());
            this.chart = echarts.init(document.getElementById(this.id));
            this.chart.setOption({
              color: this.color,
              title: {
                text: '',
              },
              calculable: true,
              grid: {
                left: '50px',
                right: '3%',
                bottom: '20px',
                top: '15px'
              },
              xAxis: [
                {
                  type: 'category',
                  // data : this.xAxisTxt,
                  data: ['花园小区', '锦园小区', '云台小区', '教师宿舍区'],
                  splitLine: {show: false},//去除网格线
                  axisLine: {
                    lineStyle: {
                      color: '#3D89FE',
                       1
                    }
                  },
                  axisLabel: {
                    show: true,
                    textStyle: {
                      color: '#fff'
                    }
                  }
                }
              ],
              yAxis: [
                {
                  type: 'value',
                  splitLine: {//去除网格线
                    show: true,
                    lineStyle: {
                      color: ['#1F4781'],
                       1,
                    }
                  },
                  axisLine: {
                    lineStyle: {
                      color: '#3D89FE',
                       1
                    }
                  },
                  axisLabel: {
                    show: true,
                    textStyle: {
                      color: '#fff'
                    }
                  }
                }
              ],
              series: [
                {
                  name: '所属小区',
                  type: 'bar',
                  barMaxWidth: '30',
                  // data:this.seriesData,
                  data: [20, 340, 40, 39]
                }
    
              ]
            })
          }
        }
    
    
      }
    </script>
    
    <style scoped>
      .wifiCollectCtrl {
        color: #333;
        padding: 5px;
         100%;
        height: 100%;
        position: relative;
      }
    </style>
    

      

  • 相关阅读:
    数据库范式 说明
    javascript链式调用实现方式总结
    jQuery工作原理解析以及源代码示例
    jquery 中 (function( window, undefined ) {})(window)写法详解(转)
    jQuery基础---filter()和find()
    使用PHP连接、操纵Memcached的原理和教程
    一篇memcache基础教程
    css书写规范
    可穿戴设备的未来市场
    axure篇
  • 原文地址:https://www.cnblogs.com/luoxuemei/p/10138338.html
Copyright © 2020-2023  润新知