关于vue 结合原生js 解决echarts resize问题

yizhihongxing

关于vue结合原生js解决echarts resize问题,可以使用下面的攻略:

攻略说明

  1. 采用vue-echarts插件加载echarts,并且绑定图表的 DOM 元素到 vue 实例中
  2. 使用 js 的 resize() 方法,监听 window 大小变化,当窗口大小发生改变时,使用 triggerResize() 方法通知echarts自适应大小

示例说明

  1. 模板代码
<template>
  <div class="chart-container">
    <div ref="chart" class="chart"></div>
  </div>
</template>

<script>
  import echarts from 'echarts';
  import { use } from "echarts/core";
  import { CanvasRenderer } from "echarts/renderers";
  use([ CanvasRenderer ]);

  export default {
    name: 'EchartsContainer',
    props: ['option'],
    mounted() {
      this.init();
      window.addEventListener('resize', this.handleWindowResize);
    },
    beforeDestroy() {
      window.removeEventListener('resize', this.handleWindowResize);
    },
    methods: {
      init() {
        this.chart = echarts.init(this.$refs.chart);
        this.chart.setOption(this.option);
      },
      handleWindowResize() {
        this.chart.resize();
      }
    }
  }
</script>

<style scoped>
  .chart-container {
    width: 100%;
  }
  .chart {
    width: 100%;
    height: 400px;
  }
</style>

在这个例子中,我们创建了一个EchartsContainer组件,使用 echarts.init() 方法初始化 echarts,将其绑定到 DOM 元素中。在window的resize事件中,触发 resize() 方法,让echarts自适应大小。

  1. 使用原生js的示例代码
<template>
  <div class="chart-container">
    <div ref="chart" class="chart"></div>
  </div>
</template>

<script>
  import echarts from 'echarts';

  export default {
    name: 'EchartsContainer',
    props: ['option'],
    mounted() {
      this.init();
      window.addEventListener('resize', this.handleWindowResize);
    },
    beforeDestroy() {
      window.removeEventListener('resize', this.handleWindowResize);
    },
    methods: {
      init() {
        this.chart = echarts.init(this.$refs.chart);
        this.chart.setOption(this.option);
      },
      handleWindowResize() {
        this.chart.resize();
      },
      // 使用原生js方法监听resize事件
      bindWinResizeHandler() {
        let _this = this; // 注意this指向问题
        let timer = null;
        window.onresize = () => {
          if(timer){
            clearTimeout(timer);
          }
          timer = setTimeout(() => {
            _this.resize();
          }, 100);
        }
      },
      // 调用chats组件resize方法
      resize() {
        this.chart.resize();
      }
    }
  }
</script>

<style scoped>
  .chart-container {
    width: 100%;
  }
  .chart {
    width: 100%;
    height: 400px;
  }
</style>

在这个例子中,我们使用了原生的js方法监听 window 的 resize 事件,并且利用setTimeout()方法进行延迟处理, 当延迟时间达到 100ms 时调用 resize() 函数,其中 this 指向到 的是组件的 vue 实例,不是原生 js 当前环境下的 this。 在resize()方法中,我们调用了 echarts 组件的 resize() 方法,让图表自适应大小。

综上所述,我们探讨了在 vue 中结合 echarts 包含两个不同示例的 resize 思路。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:关于vue 结合原生js 解决echarts resize问题 - Python技术站

(0)
上一篇 2023年6月11日
下一篇 2023年6月11日

相关文章

  • ahooks封装cookie localStorage sessionStorage方法

    介绍ahooks ahooks是一个封装好的React Hooks库,提供了很多常用的Hooks封装,可以帮助我们快速地开发Web应用。在ahooks中,有一个useCookieHooks可以用来操作cookie。如果要操作localStorage或sessionStorage,可以通过封装实现。 封装localStorage的方法 import { use…

    JavaScript 2023年6月11日
    00
  • cookie的优化与购物车实例

    关于“cookie的优化与购物车实例”的完整攻略,我把它分成以下几部分,分别是: 什么是cookie cookie的优化 购物车实例说明 什么是cookie cookie指的是保存在用户计算机中的小文件,由网站或应用程序创建。cookie通常包含了一些网站的信息,例如用户偏爱的主题或购物车内容。每次用户访问同一网站时,浏览器会向服务器发送cookie。这可以…

    JavaScript 2023年6月11日
    00
  • 如何用JS追踪用户

    下面是关于如何用JS追踪用户的完整攻略: 1. 获取用户信息 我们可以使用JS来获取用户的一些相关信息,如用户的浏览器信息、设备信息、操作系统信息等。例如,我们可以使用以下代码来获取用户的浏览器名称及版本: var browser = navigator.userAgent.toLowerCase(); if (browser.indexOf("m…

    JavaScript 2023年5月27日
    00
  • JS模拟面向对象全解(一、类型及传递)

    JS模拟面向对象全解(一、类型及传递)是一篇介绍JavaScript中模拟实现面向对象编程的文章。文章主要分为四个部分:类型、传递、多态和继承。在这里,我将详细讲解第一部分的完整攻略。 标题 首先,文章需要有一个清晰的标题,以便读者快速了解文章的主题。例如,根据本篇文章,“JS模拟面向对象全解(一、类型及传递)”就是一个恰当的标题。 类型 在JavaScri…

    JavaScript 2023年5月27日
    00
  • JavaScript中日期函数的相关操作知识

    首先需要了解JavaScript中日期函数的基本操作知识,包括日期的创建、格式化和计算等。 创建日期对象 在JavaScript中,可以使用Date对象来创建一个日期。创建方式有多种,如下所示: 使用日期字符串创建 可以使用日期字符串来创建日期对象,字符串的格式为”YYYY/MM/DD”或者”MM/DD/YYYY”等,例如: var d = new Date…

    JavaScript 2023年5月27日
    00
  • Java返回可变引用对象问题整理

    让我来详细讲解一下Java中返回可变引用对象问题的完整攻略。 什么是可变引用对象 在Java中,一个类分为基本类型和引用类型两种类型。基本类型的数据在赋值时直接复制了值本身,不会影响到原来的数据;而引用类型则是在赋值时复制的是引用,这个引用指向的是真正的数据空间。当一个引用类型变量被赋值时,它指向的地址就发生了改变,但是它所指向的对象的地址没有改变。 那么,…

    JavaScript 2023年6月11日
    00
  • Js操作DOM元素及获取浏览器高宽的简单方法

    Js操作DOM元素及获取浏览器高宽的简单方法的攻略如下: 操作DOM元素 选择元素 在Javascript中,选择DOM元素是很重要的一步。有很多方法可以选择DOM元素,但是最常用的方法是使用document.querySelector和document.querySelectorAll这两个方法。 document.querySelector方法返回一个与…

    JavaScript 2023年6月10日
    00
  • Spring boot项目整合WebSocket方法

    下面是关于Spring boot整合WebSocket的完整攻略。 环境准备 JDK 1.8及以上版本 Maven 3.2及以上版本 Spring Boot 2.x版本 IDE:Eclipse、IDEA 依赖配置 在Spring Boot项目中开启WebSocket功能需要引入相关依赖,添加以下依赖到项目的pom.xml文件中: <dependency…

    JavaScript 2023年6月11日
    00
合作推广
合作推广
分享本页
返回顶部