修复charts切换侧边栏或者缩放窗口显示bug
This commit is contained in:
		| @@ -3,50 +3,54 @@ import { debounce } from '@/utils' | ||||
| export default { | ||||
|   data() { | ||||
|     return { | ||||
|       $_sidebarElm: null | ||||
|       $_sidebarElm: null, | ||||
|       $_resizeHandler: null | ||||
|     } | ||||
|   }, | ||||
|   mounted() { | ||||
|     this.$_initResizeEvent() | ||||
|     this.$_initSidebarResizeEvent() | ||||
|   }, | ||||
|   beforeDestroy() { | ||||
|     this.$_destroyResizeEvent() | ||||
|     this.$_destroySidebarResizeEvent() | ||||
|     this.initListener() | ||||
|   }, | ||||
|   activated() { | ||||
|     this.$_initResizeEvent() | ||||
|     this.$_initSidebarResizeEvent() | ||||
|     if (!this.$_resizeHandler) { | ||||
|       // avoid duplication init | ||||
|       this.initListener() | ||||
|     } | ||||
|  | ||||
|     // when keep-alive chart activated, auto resize | ||||
|     this.resize() | ||||
|   }, | ||||
|   beforeDestroy() { | ||||
|     this.destroyListener() | ||||
|   }, | ||||
|   deactivated() { | ||||
|     this.$_destroyResizeEvent() | ||||
|     this.$_destroySidebarResizeEvent() | ||||
|     this.destroyListener() | ||||
|   }, | ||||
|   methods: { | ||||
|     $_resizeHandler() { | ||||
|       return debounce(() => { | ||||
|         if (this.chart) { | ||||
|           this.chart.resize() | ||||
|         } | ||||
|       }, 100)() | ||||
|     }, | ||||
|     $_initResizeEvent() { | ||||
|       window.addEventListener('resize', this.$_resizeHandler) | ||||
|     }, | ||||
|     $_destroyResizeEvent() { | ||||
|       window.removeEventListener('resize', this.$_resizeHandler) | ||||
|     }, | ||||
|     // use $_ for mixins properties | ||||
|     // https://vuejs.org/v2/style-guide/index.html#Private-property-names-essential | ||||
|     $_sidebarResizeHandler(e) { | ||||
|       if (e.propertyName === 'width') { | ||||
|         this.$_resizeHandler() | ||||
|       } | ||||
|     }, | ||||
|     $_initSidebarResizeEvent() { | ||||
|     initListener() { | ||||
|       this.$_resizeHandler = debounce(() => { | ||||
|         this.resize() | ||||
|       }, 100) | ||||
|       window.addEventListener('resize', this.$_resizeHandler) | ||||
|  | ||||
|       this.$_sidebarElm = document.getElementsByClassName('sidebar-container')[0] | ||||
|       this.$_sidebarElm && this.$_sidebarElm.addEventListener('transitionend', this.$_sidebarResizeHandler) | ||||
|     }, | ||||
|     $_destroySidebarResizeEvent() { | ||||
|     destroyListener() { | ||||
|       window.removeEventListener('resize', this.$_resizeHandler) | ||||
|       this.$_resizeHandler = null | ||||
|  | ||||
|       this.$_sidebarElm && this.$_sidebarElm.removeEventListener('transitionend', this.$_sidebarResizeHandler) | ||||
|     }, | ||||
|     resize() { | ||||
|       const { chart } = this | ||||
|       chart && chart.resize() | ||||
|     } | ||||
|   } | ||||
| } | ||||
|   | ||||
		Reference in New Issue
	
	Block a user