Skip to content

Scroller 滚动列表

参数

参数说明类型可选值默认值
top距离顶部多少 px 触发number80
bottom距离底部多少 px 触发number100
loadingText正在刷新文案string正在刷新
pullingText下拉刷新文案string下拉刷新
releaseText释放刷新文案string释放刷新
scrollTop滚动条距离顶部位置number
scrollIntoView滚动到对应元素 idstring
scrollWithAnimation滚动是否动画 idbooleantrue
enableBackToTop点击回顶部boolean
showBackTopButton是否显示返回顶部按钮booleantrue
showScrollbar是否显示滚动条boolean
refresherEnabled开启刷新booleantrue

事件

插槽说明参数
down下拉刷新
up加载更多
scroll滚动时触发{ detail: { scrollTop } }

方法

插槽说明参数
scrollTo滚动到(top: number)
backTop回到顶部

插槽

插槽说明参数
loading下拉加载

示例

基本用法

html
<template>
	<cl-page fullscreen>
		<cl-scroller :ref="setRefs('scroller')" @up="loadmore" @down="refresh">
			<cl-list-item
				v-for="(item, index) in list"
				:key="index"
				:label="`${item + 1}`"
				:padding="[0, 20, 0, 20]"
			/>
		</cl-scroller>
	</cl-page>
</template>

<script lang="ts" setup>
	import { ref } from "vue";
	import { useCool } from "/@/cool";
	import { onReady } from "@dcloudio/uni-app";
	import { range } from "lodash-es";

	const { refs, setRefs } = useCool();

	const list = ref<number[]>([]);

	function loadmore() {
		setTimeout(() => {
			const data = range(list.value.length, list.value.length + 20);
			list.value.push(...data);
		}, 300);
	}

	function refresh() {
		list.value = range(20);

		setTimeout(() => {
			refs.scroller.end();
		}, 500);
	}

	onReady(() => {
		refresh();
	});
</script>