11import Vue from 'vue' ;
22import { throttle } from './util' ;
33
4+ // some data help to calculate
45let delta = {
56 total : 0 ,
67 direct : '' ,
@@ -12,6 +13,16 @@ let delta = {
1213 bench_padding : 0
1314} ;
1415
16+ // save scroll direct and last scroll position
17+ const saveDirect = ( scrollTop ) => {
18+ if ( ! delta . last_top ) {
19+ delta . last_top = scrollTop ;
20+ } else {
21+ delta . direct = delta . last_top > scrollTop ? 'UP' : 'DOWN' ;
22+ delta . last_top = scrollTop ;
23+ }
24+ } ;
25+
1526Vue . component ( 'virtual-list' , {
1627
1728 props : {
@@ -38,7 +49,7 @@ Vue.component('virtual-list', {
3849 let viewHeight = cont . offsetHeight ;
3950 let listHeight = listbox . offsetHeight ;
4051
41- this . recordDirect ( scrollTop ) ;
52+ saveDirect ( scrollTop ) ;
4253
4354 // scroll to top
4455 if ( scrollTop === 0 ) {
@@ -56,15 +67,6 @@ Vue.component('virtual-list', {
5667 }
5768 } , 16 , true , true ) ,
5869
59- recordDirect ( scrollTop ) {
60- if ( ! delta . last_top ) {
61- delta . last_top = scrollTop ;
62- } else {
63- delta . direct = delta . last_top > scrollTop ? 'UP' : 'DOWN' ;
64- delta . last_top = scrollTop ;
65- }
66- } ,
67-
6870 showNext ( ) {
6971 delta . page_type = 'NEXT' ;
7072 this . $emit ( 'bottom' ) ;
@@ -95,7 +97,7 @@ Vue.component('virtual-list', {
9597 }
9698
9799 return index >= ( delta . start_index - this . pageCounts )
98- && index <= ( delta . start_index - 1 ) ;
100+ && index < delta . start_index ;
99101 } ) ;
100102
101103 if ( nowStartIndex !== udf ) {
0 commit comments