@@ -40,17 +40,7 @@ const VirtualList = Vue.component(NAME, {
40
40
this . isHorizontal = this . direction === 'horizontal'
41
41
this . directionKey = this . isHorizontal ? 'scrollLeft' : 'scrollTop'
42
42
43
- this . virtual = new Virtual ( {
44
- size : this . size , // also could be a estimate value
45
- slotHeaderSize : 0 ,
46
- slotFooterSize : 0 ,
47
- keeps : this . keeps ,
48
- buffer : Math . round ( this . keeps / 3 ) , // recommend for a third of keeps
49
- uniqueIds : this . getUniqueIdFromDataSources ( )
50
- } , this . onRangeChanged )
51
-
52
- // sync initial range
53
- this . range = this . virtual . getRange ( )
43
+ this . installVirtual ( )
54
44
55
45
// listen item size changing
56
46
this . $on ( EVENT_TYPE . ITEM , this . onItemResized )
@@ -72,8 +62,6 @@ const VirtualList = Vue.component(NAME, {
72
62
} else if ( this . offset ) {
73
63
this . scrollToOffset ( this . offset )
74
64
}
75
-
76
- window . virtual = this . virtual
77
65
} ,
78
66
79
67
methods : {
@@ -116,8 +104,32 @@ const VirtualList = Vue.component(NAME, {
116
104
}
117
105
} ,
118
106
107
+ // reset all state back to initial
108
+ reset ( ) {
109
+ this . virtual . destroy ( )
110
+ this . scrollToOffset ( 0 )
111
+ this . installVirtual ( )
112
+ } ,
113
+
119
114
// ----------- public method end -----------
120
115
116
+ installVirtual ( ) {
117
+ this . virtual = new Virtual ( {
118
+ size : this . size , // also could be a estimate value
119
+ slotHeaderSize : 0 ,
120
+ slotFooterSize : 0 ,
121
+ keeps : this . keeps ,
122
+ buffer : Math . round ( this . keeps / 3 ) , // recommend for a third of keeps
123
+ uniqueIds : this . getUniqueIdFromDataSources ( )
124
+ } , this . onRangeChanged )
125
+
126
+ // sync initial range
127
+ this . range = this . virtual . getRange ( )
128
+
129
+ // just for debug
130
+ // window.virtual = this.virtual
131
+ } ,
132
+
121
133
getUniqueIdFromDataSources ( ) {
122
134
return this . dataSources . map ( ( dataSource ) => dataSource [ this . dataKey ] )
123
135
} ,
0 commit comments