1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63
| <script> function throttle(fn, wait) { var pre = Date.now(); return function () { var context = this; var args = arguments; var now = Date.now(); if (now - pre >= wait) { fn.apply(context, args); pre = Date.now(); } }; } import axios from "axios"; export default { data() { return { allListData: [], itemHeight: 40, count: 10, start: 0, end: 10, topVal: 0, loading: false, }; }, computed: { showListData: function () { return this.allListData.slice(this.start, this.end); }, }, async created() { this.loading = true; const res = await axios.get("xxxxxx"); this.allListData = res.data.data; this.loading = false; }, methods: { handleScroll() { throttle(this.s(), 500); }, s() {
const scrollTop = this.$refs.virtualListWrap.scrollTop; this.start = Math.floor(scrollTop / this.itemHeight); this.end = this.start + this.count;
this.topVal = this.$refs.virtualListWrap.scrollTop + "px"; }, }, }; </script>
|