@@ -3,32 +3,54 @@ import { debounce } from '@/utils'
3
3
export default {
4
4
data ( ) {
5
5
return {
6
- $_sidebarElm : null
6
+ $_sidebarElm : null ,
7
+ $_resizeHandler : null
7
8
}
8
9
} ,
9
10
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
+ }
16
18
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 ( )
19
21
} ,
20
22
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 ( )
24
27
} ,
25
28
methods : {
26
29
// use $_ for mixins properties
27
30
// https://vuejs.org/v2/style-guide/index.html#Private-property-names-essential
28
31
$_sidebarResizeHandler ( e ) {
29
32
if ( e . propertyName === 'width' ) {
30
- this . __resizeHandler ( )
33
+ this . $_resizeHandler ( )
31
34
}
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 ( )
32
54
}
33
55
}
34
56
}
0 commit comments