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

关于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日

相关文章

  • JavaScript面向对象实现贪吃蛇游戏

    JavaScript面向对象实现贪吃蛇游戏的步骤如下: 定义Snake类 Snake类表示贪吃蛇,包含以下属性: body:表示蛇身,由一个包含多个坐标的数组组成 direction:表示蛇的方向,可以取值为”up”、”down”、”left”、”right”之一 Snake类包含以下方法: move():根据方向移动蛇的位置,并更新蛇的身体 changeD…

    JavaScript 2023年6月10日
    00
  • 通过url查找a元素并点击

    要通过url查找a元素并点击, 我们可以使用Selenium WebDriver来实现。以下是完整攻略的步骤: 1. 安装Selenium WebDriver 在终端中输入以下命令,安装Selenium WebDriver: pip install selenium 2. 导入依赖包 from selenium import webdriver from s…

    JavaScript 2023年6月11日
    00
  • Javascript之String对象详解

    Javascript之String对象详解 String对象简介 String对象是Javascript中的基本对象之一,用来表示字符串类型。在Javascript程序中,经常需要对字符串进行各种处理,使用String对象提供的方法便可轻松实现。 String对象的创建 可以使用字面量、字符串构造函数或toString()函数来创建String对象。 var…

    JavaScript 2023年6月10日
    00
  • vue3.0+vant3.0快速搭建项目的实现

    下面就是“vue3.0+vant3.0快速搭建项目的实现”的完整攻略: 简介 在新版Vue和Vant的配合下,搭建高质量的移动端Web应用变得更加容易和快捷。接下来,我们将向您介绍如何使用Vue3.0和Vant3.0快速搭建项目。 准备工作 在开始之前,您需要确保您的电脑上已经安装了Node.js和Vue CLI。由于本攻略假设您已经对Vue CLI和Van…

    JavaScript 2023年6月11日
    00
  • javascript中拼接HTML字符串的最快、最好的方法

    拼接HTML字符串是在javascript中开发中的一个常见需求。为了避免使用字符串拼接来构造HTML代码时产生的代码难以维护、不易阅读的问题,我们可以使用其他更好的方法来拼接HTML字符串,这是一个更快、更好的方法。 本文将介绍如何通过使用JavaScript来拼接HTML字符串,并给出两个例子,以详细解释每个步骤。 基于字符串模板的拼接 第一个方法是基于…

    JavaScript 2023年5月19日
    00
  • 小议javascript 设计模式 推荐

    小议JavaScript设计模式 前言 JavaScript是一种弱类型、动态类型的解释性脚本语言,开发人员可以在编写代码的同时运行程序,这使得JavaScript成为了Web开发过程的重要组成部分。借助JavaScript设计模式,开发人员能够更加规范、优化自己的代码,提高代码的可维护性和可拓展性,使得自己称为一个优秀的程序员。 常见设计模式 Javasc…

    JavaScript 2023年6月10日
    00
  • JS使用ajax方法获取指定url的head信息中指定字段值的方法

    要使用JS获取指定URL的Head信息中指定字段值,需要使用Ajax方法,具体操作流程如下: 创建XMLHttpRequest对象 XMLHttpRequest对象是用于在后台与服务器交换数据的核心技术之一,能够在不刷新页面的情况下更新网页的局部信息。 const xhr = new XMLHttpRequest(); 用open方法指定请求信息 open方…

    JavaScript 2023年6月11日
    00
  • JavaScript中Array的filter函数详解

    JavaScript中的Array对象提供了一个filter方法,该方法可以用于在数组中过滤出符合条件的元素。本文将详细介绍该方法的使用方法。 Array的filter函数详解 语法 array.filter(function(currentValue, index, arr), thisValue) 参数 function(currentValue, in…

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