• vue学习日记10


    Echart

    还是先下载安装

    npm install echarts --save 

    echarts官网 

    https://www.echartsjs.com/zh/tutorial.html#5%20%E5%88%86%E9%92%9F%E4%B8%8A%E6%89%8B%20ECharts

    vue也有封装好的echarts,在使用 echarts 生成图表时,经常需要做繁琐的数据类型转化、修改复杂的配置项,v-charts 的出现正是为了解决这个痛点。基于 Vue2.0 和 echarts 封装的 v-charts 图表组件,只需要统一提供一种对前后端都友好的数据格式设置简单的配置项,便可轻松生成常见的图表。

    v-charts官网

    https://v-charts.js.org/#/

    以echarts为例:

    <template>
      <div>
        <div ref="chartDom" style="height:300px"></div>
      </div>
    </template>
    
    <script>
    import echarts from "echarts";
    import { addListener, removeListener } from "resize-detector";
    import debounce from "loadsh/debounce";
    export default {
      props: {
        option: {
          type: Object,
          default: () => {}
        }
      },
      watch: {
        option(val) {
          this.Chart.setOption(val);
        }
      },
      created() {
        this.resize = debounce(this.resize, 100);
      },
      mounted() {
        this.renderChart();
        addListener(this.$refs.chartDom, this.resize);
      },
      methods: {
        resize() {
          this.Chart.resize();
        },
        renderChart() {
          this.Chart = echarts.init(this.$refs.chartDom);
          this.Chart.setOption(this.option);
        }
      },
      beforeDestroy() {
        removeListener(this.$refs.chartDom, this.resize);
        this.Chart.dispose();
        this.Chart = null;
      }
    };
    </script>
    
    <style></style>

    这里我是将options的值从父组件传过来的。具体数据如下

     option = {
                title: {
                    text: 'ECharts 入门示例'
                },
                tooltip: {},
                legend: {
                    data:['销量']
                },
                xAxis: {
                    data: ["衬衫","羊毛衫","雪纺衫","裤子","高跟鞋","袜子"]
                },
                yAxis: {},
                series: [{
                    name: '销量',
                    type: 'bar',
                    data: [10, 20, 30, 40, 50, 60]
                }]
            };
    resize-detector
    当我们画出图像之后,当DOM尺寸发生改变,图像的尺寸是不会发生改变的。有的就会超出范围,或是没有占据整行,这里我们使用了resize-detector,可以给我们的dom元素添加监听事件。当监听到dom尺寸发生变化的时候,就调用resize。
    要注意的是,这里的charts宽度不能设为固定值,得用百分比,不然resize会失效。
    当然还是需要先下载。
    npm i --save resize-detector

    使用的方法,上面代码有。引入添加监听和移除监听两个事件。做相应的操作。

    debounce

    防抖函数,这是lodash函数库里面的一个封装好了的函数,lodash里面还提供了很多的方法。

    这里设置防抖是因为在dom尺寸发生改变的时候,监听器会多出的触发。

    lodash网址

    https://www.lodashjs.com/

    最后效果图

  • 相关阅读:
    Android开发经验一判断当前屏幕是全屏还是非全屏
    Android得到控件在屏幕中的坐标
    MyBatis简单的增删改查以及简单的分页查询实现
    Coreseek:第二步建索引及測试
    极静之渊
    统计电影票房排名前10的电影并存入还有一个文件
    AAA
    FreeLink开源呼叫中心设计思想
    树后台数据存储(採用webmethod)
    [乐意黎原创] 百度统计这个坑爹货
  • 原文地址:https://www.cnblogs.com/wangnothings/p/12543908.html
Copyright © 2020-2023  润新知