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

相关文章

  • 用JS做的简单的可折叠的两级树形菜单

    下面我将详细讲解使用JS实现一个简单的可折叠两级树形菜单的攻略。 准备工作 首先,我们需要准备一些基本的html和css代码,用于渲染出菜单的样式和结构。下面是一个简单的示例结构: <div class="menu"> <ul> <li><a href="#">菜单1&l…

    JavaScript 2023年6月11日
    00
  • js日历相关函数使用详解

    JS日历相关函数使用详解 背景 很多网站需要使用日历组件来提供日期输入的功能。而JavaScript日历组件则是一种极为常见和方便的实现方式。本篇文章将介绍如何使用JavaScript实现一个日历组件,并详细介绍日历组件相关的核心函数。 实现 HTML结构 在HTML结构中,我们需要一个用于显示日期的input元素和一个用于显示日历的div元素。示例代码如下…

    JavaScript 2023年5月27日
    00
  • JS的Ajax与后端交互数据的实例

    JS的Ajax与后端交互数据的实例攻略分以下几个部分: 基本概念及工作原理介绍 使用XMLHttpRequest对象进行Ajax请求发送和数据接收 使用Fetch API进行Ajax请求发送和数据接收 实例说明 小结 下面我一一讲解。 基本概念及工作原理介绍 Ajax全称Asynchronous JavaScript and XML(异步JavaScript…

    JavaScript 2023年6月11日
    00
  • Easy.Ajax 部分源代码 支持文件上传功能, 兼容所有主流浏览器

    Easy.Ajax 是一款基于 jQuery 库的 Ajax 库,用于简化 Ajax 的操作流程。其中,Easy.Ajax 部分源代码支持文件上传功能,同时兼容各大主流浏览器。下面将详细讲解该功能的使用方法。 首先,需要在页面中引入必要的文件及库: <!– 引入 jQuery 库 –> <script src="https:/…

    JavaScript 2023年6月11日
    00
  • Lua脚本语言简明入门教程

    Lua脚本语言简明入门教程攻略 1. Lua概述 Lua是一种轻量级、高效的嵌入式脚本语言,其语法简单、易于学习和使用,可以被嵌入到各种应用程序中进行扩展。Lua的核心库非常小,但是却包括了基本的数据类型、控制结构、函数、文件操作等常用功能。 2. Lua基础 2.1 变量和数据类型 Lua的基本数据类型包括:nil、boolean、number、strin…

    JavaScript 2023年6月10日
    00
  • JavaScript 异步调用框架 (Part 2 – 用例设计)

    JavaScript异步调用框架 (Part 2 – 用例设计) 什么是异步调用? JavaScript是一种单线程的语言,所以同一时间只能执行一个任务。当一个任务阻塞了线程时,其他任务只能等待。由于JavaScript常用于web编程中,用户期望网页能够立即响应他们的操作。如果JavaScript因为执行某些长时间运行的函数而阻塞了线程,网页将会出现卡顿的…

    JavaScript 2023年5月28日
    00
  • JavaScript对象解构的用法实例解析

    下面进入详细讲解“JavaScript对象解构的用法实例解析”的完整攻略。 什么是对象解构 在 JavaScript 中,对象解构是一种将对象中属性的值解构到独立变量中的方法。它允许您从对象中选择某些属性并将其作为独立变量使用。 对象解构的语法 对象解构使用专门的语法来表示,具体来说,它的语法如下: const { property1, property2 …

    JavaScript 2023年5月27日
    00
  • 在JavaScript中如何解决用execCommand(

    在JavaScript中,可以使用execCommand()方法来执行一些富文本编辑操作,如加粗、斜体、插入链接等。下面是一些解决execCommand()的方法以及示例说明。 方法一:使用document.execCommand() 使用document.execCommand()方法可以直接执行一些富文本编辑操作,如下示例代码演示了如何在文本框中插入一段…

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