@@ -3,32 +3,54 @@ import { debounce } from '@/utils'
33export default {
44 data ( ) {
55 return {
6- $_sidebarElm : null
6+ $_sidebarElm : null ,
7+ $_resizeHandler : null
78 }
89 } ,
910 mounted ( ) {
10- this . __resizeHandler = debounce ( ( ) => {
11- if ( this . chart ) {
12- this . chart . resize ( )
13- }
14- } , 100 )
15- window . addEventListener ( 'resize' , this . __resizeHandler )
11+ this . initListener ( )
12+ } ,
13+ activated ( ) {
14+ if ( ! this . $_resizeHandler ) {
15+ // avoid duplication init
16+ this . initListener ( )
17+ }
1618
17- this . $_sidebarElm = document . getElementsByClassName ( 'sidebar-container' ) [ 0 ]
18- this . $_sidebarElm && this . $_sidebarElm . addEventListener ( 'transitionend' , this . $_sidebarResizeHandler )
19+ // when keep-alive chart activated, auto resize
20+ this . resize ( )
1921 } ,
2022 beforeDestroy ( ) {
21- window . removeEventListener ( 'resize' , this . __resizeHandler )
22-
23- this . $_sidebarElm && this . $_sidebarElm . removeEventListener ( 'transitionend' , this . $_sidebarResizeHandler )
23+ this . destroyListener ( )
24+ } ,
25+ deactivated ( ) {
26+ this . destroyListener ( )
2427 } ,
2528 methods : {
2629 // use $_ for mixins properties
2730 // https://vuejs.org/v2/style-guide/index.html#Private-property-names-essential
2831 $_sidebarResizeHandler ( e ) {
2932 if ( e . propertyName === 'width' ) {
30- this . __resizeHandler ( )
33+ this . $_resizeHandler ( )
3134 }
35+ } ,
36+ initListener ( ) {
37+ this . $_resizeHandler = debounce ( ( ) => {
38+ this . resize ( )
39+ } , 100 )
40+ window . addEventListener ( 'resize' , this . $_resizeHandler )
41+
42+ this . $_sidebarElm = document . getElementsByClassName ( 'sidebar-container' ) [ 0 ]
43+ this . $_sidebarElm && this . $_sidebarElm . addEventListener ( 'transitionend' , this . $_sidebarResizeHandler )
44+ } ,
45+ destroyListener ( ) {
46+ window . removeEventListener ( 'resize' , this . $_resizeHandler )
47+ this . $_resizeHandler = null
48+
49+ this . $_sidebarElm && this . $_sidebarElm . removeEventListener ( 'transitionend' , this . $_sidebarResizeHandler )
50+ } ,
51+ resize ( ) {
52+ const { chart } = this
53+ chart && chart . resize ( )
3254 }
3355 }
3456}
0 commit comments