1
1
<template >
2
2
<div >
3
3
<base-loader v-if =" isLoading" >Töltés...</base-loader >
4
- <p v-else-if =" error" >{{ error }}</p >
4
+ <p v-else-if =" error" class = " text-center display-3 " >{{ error }}</p >
5
5
<p v-else-if =" !results || results.length === 0" class =" text-center display-3" >
6
6
Nincs adat
7
7
</p >
19
19
</template >
20
20
21
21
<script >
22
- import { ref , onBeforeMount } from ' vue' ;
22
+ import { ref , onBeforeMount , onUnmounted } from ' vue' ;
23
23
import LandingItem from ' ../components/landing/LandingItem.vue' ;
24
24
import axios from ' @/config/axios.js' ;
25
25
export default {
26
26
name: ' Landing' ,
27
- title: ' asd' ,
28
27
components: { LandingItem },
29
28
setup () {
30
29
const results = ref ([]);
31
30
const isLoading = ref (false );
32
31
const error = ref (null );
32
+ const limit = 5 ;
33
+ let page = 1 ;
33
34
34
35
function loadExp () {
35
- isLoading .value = true ;
36
36
error .value = null ;
37
-
37
+ if ( ! results . value ) isLoading . value = true ;
38
38
axios
39
- .get (' /homepage' )
39
+ .get (` /homepage?limit= ${ limit } &page= ${ page } ` )
40
40
.then (res => {
41
41
const datas = [];
42
42
for (const i in res .data ) {
@@ -47,11 +47,12 @@ export default {
47
47
picture: res .data [i].picture ,
48
48
});
49
49
}
50
- results .value = datas;
50
+ page++ ;
51
+ results .value .push (... datas);
51
52
isLoading .value = false ;
52
53
})
53
54
.catch (err => {
54
- error .value = err;
55
+ error .value = err . message ;
55
56
console .log (' ERROR' , err);
56
57
});
57
58
}
@@ -60,9 +61,21 @@ export default {
60
61
return id % 2 ? ' left' : ' right' ;
61
62
}
62
63
64
+ function handleScroll () {
65
+ const posFromBottom = Math .max (
66
+ document .body .offsetHeight - (window .pageYOffset + window .innerHeight ),
67
+ 0 ,
68
+ );
69
+ if (posFromBottom < 100 ) loadExp ();
70
+ }
71
+
63
72
onBeforeMount (() => {
73
+ window .addEventListener (' scroll' , handleScroll);
64
74
loadExp ();
65
75
});
76
+ onUnmounted (() => {
77
+ window .removeEventListener (' scroll' , handleScroll);
78
+ });
66
79
return { isLoading, results, error, orient };
67
80
},
68
81
};
0 commit comments