Loadmore 加载更多组件
<coolui-scroller-loadmore> 展示上拉加载的状态与文案,放在 coolui-scroller 的 loadmore 插槽里。
对应原生微信小程序版:Loadmore 加载更多组件
代码演示
vue
<template>
<coolui-scroller :isEmpty="isEmpty" @refresh="refresh" @loadmore="loadmore">
<coolui-scroller-item v-for="(item, index) in list" :key="index">
<view class="item">{{ item.title }}</view>
</coolui-scroller-item>
<template #loadmore>
<coolui-scroller-loadmore
:status="loadMoreSetting.status"
:loading="loadMoreSetting.loading"
:more="loadMoreSetting.more"
:noMore="loadMoreSetting.noMore"
/>
</template>
</coolui-scroller>
</template>
<script setup lang="ts">
import { ref } from 'vue'
const isEmpty = ref(false)
const list = ref<{ title: string }[]>([])
const loadMoreSetting = ref({
status: 'more', // more | loading | noMore
loading: { text: '加载中', color: '#999999' },
more: { text: '查看更多', color: '#333333' },
noMore: { text: '没有更多', color: '#999999' },
})
function refresh() {
loadMoreSetting.value.status = 'loading'
// 刷新完成后改为 'more'(还有数据)或 'noMore'(没有更多)
return Promise.resolve()
}
function loadmore() {
loadMoreSetting.value.status = 'loading'
// 加载完成后改为 'more'(还有数据)或 'noMore'(没有更多)
return Promise.resolve()
}
</script>vue
<template>
<coolui-scroller :isEmpty="isEmpty" @refresh="refresh" @loadmore="loadmore">
<coolui-scroller-item v-for="(item, index) in list" :key="index">
<view class="item">{{ item.title }}</view>
</coolui-scroller-item>
<template #loadmore>
<coolui-scroller-loadmore
:status="loadMoreSetting.status"
:loading="loadMoreSetting.loading"
:more="loadMoreSetting.more"
:noMore="loadMoreSetting.noMore"
/>
</template>
</coolui-scroller>
</template>
<script>
export default {
data() {
return {
isEmpty: false,
list: [],
loadMoreSetting: {
status: 'more', // more | loading | noMore
loading: { text: '加载中', color: '#999999' },
more: { text: '查看更多', color: '#333333' },
noMore: { text: '没有更多', color: '#999999' },
},
}
},
methods: {
refresh() {
this.loadMoreSetting.status = 'loading'
// 刷新完成后改为 'more'(还有数据)或 'noMore'(没有更多)
return Promise.resolve()
},
loadmore() {
this.loadMoreSetting.status = 'loading'
// 加载完成后改为 'more'(还有数据)或 'noMore'(没有更多)
return Promise.resolve()
},
},
}
</script>属性
| 属性 | 说明 | 类型 | 默认值 |
|---|---|---|---|
| status | 当前状态:more / loading / noMore | String | 'more' |
| loading | 加载中状态的文字与颜色 | Object | { text: '加载中', color: '#999999' } |
| more | 可上拉状态的文字与颜色 | Object | { text: '查看更多', color: '#333333' } |
| noMore | 没有更多状态的文字与颜色 | Object | { text: '没有更多', color: '#999999' } |
| color | 兼容字段 | String | '#999999' |
| shake | 兼容字段 | Boolean | false |
与原生版的差异
- 原生还有一个
noMoreTextStyle属性,uni-app 版已移除,直接用noMore.text/noMore.color即可; - 其余属性完全一致。