日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

VUE 單頁面使用 echart 窗口變化時的用法

瀏覽:163日期:2022-12-22 08:06:32

在 VUE 項目中,為了使 echart 在窗口變化時能夠自適應,要用到 window.resize = function(){ .......};

但是我在項目剛開始的時間就有一個地方的高度變化使用了 window.resize ,在里面再次使用 會覆蓋掉原來的,所以在里面圖表使用時可以用

window.addEventListener(’resize’,this.resizeFu,false);

resixeFu 就是圖表變化時的方法

resizeFu(){ let div = document.getElementById(’changeData’); if(div && this.changeData.DataTime.length>0){ this.chartsDiv.changeData.resize(); }}

但里面有一個問題就是:每次進來當前頁面都會執行 window.addEventListener

解決方法是在路由勾子函數中把它給去掉,方法是

beforeRouteLeave(to, from, next) { //頁面走掉把事件給清除掉 window.removeEventListener('resize', this.resizeFu,false); next()},

補充知識:vue+echart圖表自適應屏幕大小、點擊側邊欄展開收縮圖表自適應大小resize

開發中用到了echart圖表,需要圖表自適應大小resize,一開始使用的方法是:

window.onresize = function () { this.myChart.resize();};

但是又遇到一個問題,點擊側邊欄的展開收起的時候,圖表的大小沒有自適應(因為窗口的大小沒有變化)

這里參考vue+element+admin的框架寫的自適應

VUE 單頁面使用 echart 窗口變化時的用法

一、index.vue的文件

引入chart圖表``

VUE 單頁面使用 echart 窗口變化時的用法

這里是數據

chartData: { title: { text: ’3-1(2)’, textStyle: { color: ’#979797’, fontSize: 14 } }, tooltip: { trigger: ’axis’ }, legend: { icon: ’rect’, itemWidth: 4, // 圖例標記的圖形寬度 itemHeight: 11, textStyle: { lineHeight: 65, fontSize: 14 }, data: [’郵件營銷’, ’聯盟廣告’, ’視頻廣告’, ’直接訪問’, ’搜索引擎’] }, grid: { left: ’3%’, right: ’4%’, bottom: ’3%’, containLabel: true }, xAxis: { type: ’category’, boundaryGap: false, data: [’周一’, ’周二’, ’周三’, ’周四’, ’周五’, ’周六’, ’周日’] }, yAxis: { type: ’value’ }, series: [ { name: ’郵件營銷’, type: ’line’, stack: ’總量’, data: [0, 132, 101, 134, 90, 230, 210] }, { name: ’聯盟廣告’, type: ’line’, stack: ’總量’, data: [220, 12, 191, 234, 20, 330, 10] }, { name: ’視頻廣告’, type: ’line’, stack: ’總量’, data: [15, 232, 201, 154, 190, 330, 110] }, { name: ’直接訪問’, type: ’line’, stack: ’總量’, data: [320, 420, 301, 334, 60, 330, 320] }, { name: ’搜索引擎’, type: ’line’, stack: ’總量’, data: [820, 932, 901, 934, 1290, 1330, 1320] } ] }

二、chart.vue

<template> <div : : /></template><script>import echarts from ’echarts’import resize from ’./mixins/resize’export default { mixins: [resize], props: { className: { type: String, default: ’chart’ }, width: { type: String, default: ’100%’ }, height: { type: String, default: ’300px’ }, autoResize: { type: Boolean, default: true }, chartData: { type: Object, required: true } }, data() { return { chart: null } }, watch: { chartData: { deep: true, handler(val) { this.setOptions(val) } } }, mounted() { this.$nextTick(() => { this.initChart() }) }, beforeDestroy() { if (!this.chart) { return } this.chart.dispose() this.chart = null }, methods: { initChart() { this.chart = echarts.init(this.$el, ’macarons’) this.setOptions(this.chartData) }, setOptions(chartData) { this.chart.setOption(chartData) } }}</script>

三、resize.js

import { debounce } from ’./debounce’export default { data() { return { $_sidebarElm: null } }, mounted() { this.$_initResizeEvent() this.$_initSidebarResizeEvent() }, beforeDestroy() { this.$_destroyResizeEvent() this.$_destroySidebarResizeEvent() }, // to fixed bug when cached by keep-alive // https://github.com/PanJiaChen/vue-element-admin/issues/2116 activated() { this.$_initResizeEvent() this.$_initSidebarResizeEvent() }, deactivated() { this.$_destroyResizeEvent() this.$_destroySidebarResizeEvent() }, methods: { // use $_ for mixins properties // https://vuejs.org/v2/style-guide/index.html#Private-property-names-essential $_resizeHandler() { return debounce(() => { if (this.chart) { this.chart.resize() } }, 100)() }, $_initResizeEvent() { window.addEventListener(’resize’, this.$_resizeHandler) }, $_destroyResizeEvent() { window.removeEventListener(’resize’, this.$_resizeHandler) }, $_sidebarResizeHandler(e) { if (e.propertyName === ’width’) { this.$_resizeHandler() } }, $_initSidebarResizeEvent() { this.$_sidebarElm = document.getElementsByClassName(’sidebar-container’)[0] this.$_sidebarElm && this.$_sidebarElm.addEventListener(’transitionend’, this.$_sidebarResizeHandler) }, $_destroySidebarResizeEvent() { this.$_sidebarElm && this.$_sidebarElm.removeEventListener(’transitionend’, this.$_sidebarResizeHandler) } }}

四、debounce.js

/** * @param {Function} func * @param {number} wait * @param {boolean} immediate * @return {*} */export function debounce(func, wait, immediate) { let timeout, args, context, timestamp, result const later = function() { // 據上一次觸發時間間隔 const last = +new Date() - timestamp // 上次被包裝函數被調用時間間隔 last 小于設定時間間隔 wait if (last < wait && last > 0) { timeout = setTimeout(later, wait - last) } else { timeout = null // 如果設定為immediate===true,因為開始邊界已經調用過了此處無需調用 if (!immediate) { result = func.apply(context, args) if (!timeout) context = args = null } } } return function(...args) { context = this timestamp = +new Date() const callNow = immediate && !timeout // 如果延時不存在,重新設定延時 if (!timeout) timeout = setTimeout(later, wait) if (callNow) { result = func.apply(context, args) context = args = null } return result }}

以上這篇VUE 單頁面使用 echart 窗口變化時的用法就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持好吧啦網。

標簽: Vue
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
亚洲福利专区| 色综合视频一区二区三区日韩 | 久久香蕉精品香蕉| 国产精品久久久久av蜜臀| 麻豆精品久久久| 韩国久久久久久| 99久久视频| 国产99久久久国产精品成人免费| 伊人久久大香线蕉av不卡| 精品国模一区二区三区| 亚洲激情久久| 日韩av不卡一区二区| 日韩三级视频| 爽好多水快深点欧美视频| 欧美一区=区三区| 精品国产欧美日韩一区二区三区| 日本欧美不卡| 国产成人精品福利| 日韩一区亚洲二区| 亚洲激情国产| 69堂免费精品视频在线播放| 久久婷婷国产| 91亚洲国产| 在线综合亚洲| 亚洲精品欧美| 高清日韩中文字幕| 99香蕉国产精品偷在线观看 | 欧美va天堂| 亚洲综合激情在线| 欧美激情网址| 亚洲国产成人精品女人| 日韩激情啪啪| 久久久久久久久丰满| 日韩精品一级中文字幕精品视频免费观看 | 国产一区二区精品| 国产午夜久久av| 成人污污视频| 蜜桃视频免费观看一区| 中文在线а√在线8| 日韩精品国产欧美| 欧美手机在线| 国产极品一区| 视频一区二区三区在线| 日韩欧美三级| 国产精品成人**免费视频| 好吊视频一区二区三区四区| 欧美黄色一区| 亚洲乱码久久| 激情欧美国产欧美| 麻豆国产欧美日韩综合精品二区| 日韩午夜在线| 麻豆精品蜜桃视频网站| 亚洲一区二区三区免费在线观看 | 中文字幕色婷婷在线视频| 午夜久久av| 91久久视频| 欧美成a人国产精品高清乱码在线观看片在线观看久 | 久久国产主播| 国产日韩一区二区三区在线| 影院欧美亚洲| 久久伊人国产| 88久久精品| 麻豆亚洲精品| 偷拍欧美精品| 91精品久久久久久久久久不卡| 久久香蕉网站| 国产精品magnet| 无码日韩精品一区二区免费| 亚洲精品一区二区妖精| av资源亚洲| 精品一区二区男人吃奶| 国产探花一区二区| 日韩二区在线观看| 亚洲日本三级| 四虎成人精品一区二区免费网站| 99久久婷婷| 日韩精品影视| 久久狠狠婷婷| 欧美日中文字幕| 久久久成人网| 天堂av在线| 天堂√8在线中文| 日韩欧美网址| 欧美日韩免费观看视频| 国产成人精品999在线观看| 久久精品免视看国产成人| 久久国产精品免费一区二区三区 | 欧美日韩视频免费观看| 国产成人久久| 精品福利久久久| 久久久久久色 | 麻豆视频观看网址久久| 久久超碰99| 精品久久99| 深夜福利视频一区二区| 久久久噜噜噜| 91精品91| 中文视频一区| 亚洲乱码视频| 国产精品白丝一区二区三区| 97精品97| 欧美日韩国产传媒| aa亚洲婷婷| 日韩在线黄色| 国产精品免费精品自在线观看| 国产精品亚洲四区在线观看| 麻豆一区二区三区| 美女一区网站| 国产精品普通话对白| 亚洲乱亚洲高清| 欧美经典一区| 久久婷婷一区| 蜜臀av在线播放一区二区三区| 久久午夜影视| 欧美啪啪一区| 日本不卡免费高清视频在线| 91久久黄色| 久久国产三级| 韩国精品主播一区二区在线观看| 1024精品一区二区三区| 蜜桃视频一区二区三区在线观看| 国产精品一区二区三区美女| 国产成人精选| 久久99伊人| 国产精品宾馆| 女人天堂亚洲aⅴ在线观看| 婷婷五月色综合香五月| 久久久久97| 久久人人97超碰国产公开结果| 免费看日韩精品| 精品国内亚洲2022精品成人| 欧美99久久| 国产精品.xx视频.xxtv| 99久久夜色精品国产亚洲狼| 国产精品三p一区二区| 99久久亚洲精品蜜臀| 日韩高清在线不卡| 丝袜美腿诱惑一区二区三区| 午夜亚洲一区| 美女视频免费精品| 老司机精品视频网| 国产一区观看| 久久精品 人人爱| 国产福利91精品一区二区| 欧美不卡高清| 欧美三级第一页| 亚洲香蕉网站| 国产精品成人3p一区二区三区| 欧美日韩中文一区二区| 国产视频一区二区在线播放| 亚洲福利精品| 国产精品对白| 久久亚洲视频| 中文字幕色婷婷在线视频| 亚洲欧美网站在线观看| 日韩激情一区| 欧美日一区二区三区在线观看国产免| 国产精品专区免费| 亚洲精品伊人| 欧美日韩精品免费观看视完整| 日韩精品一区二区三区av| 夜鲁夜鲁夜鲁视频在线播放| 蜜桃久久久久久| 成人三级高清视频在线看| 中文国产一区| 国产在线观看www| 国产欧美综合一区二区三区| 亚洲欧洲日韩精品在线| 久久蜜桃av| 免费在线成人| 在线亚洲激情| 日韩精品中文字幕第1页| 91精品麻豆| 日韩久久一区二区三区| 国产亚洲一区二区三区啪| 欧美日韩免费观看一区=区三区| 五月亚洲婷婷 | 国产第一亚洲| 青青国产91久久久久久| 狠狠干综合网| 日本在线啊啊| 91欧美国产| 日韩欧美久久| 欧美网站在线| 成人午夜国产| 国产精品麻豆久久| 国产欧美日本| 少妇精品久久久一区二区| 亚洲精品小说| 999久久久免费精品国产| 精品精品99| 久久福利在线| 久久国产生活片100| 一区二区精彩视频| 狠狠色综合网| 色婷婷精品视频| 丝袜诱惑一区二区| 免费日韩一区二区三区| 国产精品主播| 国产日本精品|