ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

vue echarts 点击左侧菜单,宽度无法自适应,且支持 窗口大小改变echarts图自适应

2021-04-15 17:02:58  阅读:246  来源: 互联网

标签:el vue 适应 Vue HANDLER elementResizeDetectorMaker echarts resize


1.引入 element-resize-detector依赖

npm i element-resize-detector --save

 

2.新建chart.resize.js文件

import echarts from "echarts";
import Vue from "vue";
import elementResizeDetectorMaker from "element-resize-detector";

export var version = "0.0.1";
var compatible = /^2\./.test(Vue.version);
if (!compatible) {
Vue.util.warn(
"vue echarts resize directive " +
version +
" only supports Vue 2.x, and does not support Vue " +
Vue.version
);
}
let HANDLER = "_vue_echarts_resize_handler";

function bind(el) {
unbind(el);
el[HANDLER] = function() {
let chart = echarts.getInstanceByDom(el);
if (!chart) {
return;
}
chart.resize();
};
//监听window窗体变化,更新echarts大小
//window.addEventListener("resize", el[HANDLER])
//监听绑定的div大小变化,更新echarts大小
elementResizeDetectorMaker().listenTo(el, el[HANDLER]);
}
function unbind(el) {
//window.removeEventListener("resize", el[HANDLER]);
elementResizeDetectorMaker().removeListener(el, el[HANDLER]);
delete el[HANDLER];
}
var directive = {
bind: bind,
unbind: unbind
};
Vue.directive("on-echart-resize", directive);

 

3.在 .vue 引入 import "../../utils/chart.resize";

4.需要使用的文件 加上 v-on-echart-resize

<div id="lineChart" ref="lineChart" v-on-echart-resize></div>

 

5.在mounted()中:

const elementResizeDetectorMaker = require("element-resize-detector");

let erd = elementResizeDetectorMaker();
erd.listenTo(this.$refs.lineChart, () => {
this.$nextTick(function () {
const lineChart = this.$echarts.init(this.$refs.lineChart);
//使echarts尺寸重置
lineChart.resize();
});
});

标签:el,vue,适应,Vue,HANDLER,elementResizeDetectorMaker,echarts,resize
来源: https://www.cnblogs.com/yoututu/p/14663332.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有