import{e as s,o as a,G as n}from"./vendor.f7062dc0.js";const t={class:"markdown-body"},l=[n('
列表滚动到底部自动加载更多数据。
import { createApp } from 'vue';\n import { InfiniteLoading } from '@nutui/nutui';\n\n const app = createApp();\n app.use(InfiniteLoading);\n<ul class="infiniteUl" id="scroll">\n <nut-infiniteloading\n containerId = 'scroll'\n :use-window='false'\n :has-more="hasMore"\n @load-more="loadMore"\n >\n <li class="infiniteLi" v-for="(item, index) in defultList" :key="index">{{item}}</li>\n </nut-infiniteloading>\n</ul>\nsetup() {\n const hasMore = ref(true);\n const data = reactive({\n defultList: []\n });\n const loadMore = done => { \n setTimeout(() => {\n const curLen = data.defultList.length;\n for (let i = curLen; i < curLen + 10; i++) {\n data.defultList.push(`${i}`);\n }\n if (data.defultList.length > 30) hasMore.value = false;\n done()\n }, 500);\n };\n const init = () => {\n for (let i = 0; i < 10; i++) {\n data.defultList.push(`${i}`);\n }\n }\n onMounted(() => {\n init()\n });\n return { loadMore, hasMore, ...toRefs(data) };\n}\n<ul class="infiniteUl" id="refreshScroll">\n <nut-infiniteloading\n pull-icon="JD"\n container-id="refreshScroll"\n :use-window="false"\n :is-open-refresh="true"\n :has-more="refreshHasMore"\n @load-more="refreshLoadMore"\n @refresh="refresh"\n >\n <li\n class="infiniteLi"\n v-for="(item, index) in refreshList"\n :key="index"\n >{{ item }}</li\n >\n </nut-infiniteloading>\n</ul>\nsetup() {\n const refreshHasMore = ref(true);\n const data = reactive({\n refreshList: []\n });\n const refreshLoadMore = done => {\n setTimeout(() => {\n const curLen = data.refreshList.length;\n for (let i = curLen; i < curLen + 10; i++) {\n data.refreshList.push(\n `${i}`\n );\n }\n if (data.refreshList.length > 30) refreshHasMore.value = false;\n done()\n }, 500);\n };\n\n const refresh = (done) => {\n setTimeout(()=>{\n Toast.success('刷新成功');\n done()\n },1000)\n }\n const init = () => {\n for (let i = 0; i < 10; i++) {\n data.refreshList.push(`${i}`);\n }\n }\n onMounted(() => {\n init()\n });\n return { refreshLoadMore, refreshHasMore, refresh, ...toRefs(data) };\n}\n<ul class="infiniteUl" id="customScroll">\n <nut-infiniteloading\n container-id = 'customScroll'\n :use-window='false'\n :has-more="customHasMore"\n @load-more="customLoadMore"\n >\n <li class="infiniteLi" v-for="(item, index) in customList" :key="index">{{item}}</li>\n <template v-slot:loading>\n <div class="loading">\n <span>加载中...</span>\n </div>\n </template>\n <template v-slot:unloadMore>\n <div class="unload-more">没有数据啦 ~~</div>\n </template>\n </nut-infiniteloading>\n</ul>\nsetup() {\n const customHasMore = ref(true);\n const data = reactive({\n customList: ['']\n });\n const customLoadMore = done => {\n setTimeout(() => {\n const curLen = data.customList.length;\n for (let i = curLen; i < curLen + 10; i++) {\n data.customList.push(`${i}`);\n }\n if (data.customList.length > 30) customHasMore.value = false;\n done()\n }, 500);\n };\n const init = () => {\n for (let i = 0; i < 10; i++) {\n data.customList.push(`${i}`);\n }\n }\n onMounted(() => {\n init()\n });\n return { customHasMore, customLoadMore,...toRefs(data) };\n}\n| 参数 | 说明 | 类型 | 默认值 |
|---|---|---|---|
| has-more | 是否还有更多数据 | Boolean | true |
| threshold | 距离底部多远加载 | Number | 200 |
| use-window | 将滚动侦听器添加到 window 否则侦听组件的父节点 | Boolean | true |
| use-capture | 是否使用捕获模式 true 捕获 false 冒泡 | Boolean | false |
| container-id | 在 useWindow 属性为 false 的时候,自定义设置节点ID | String | '' |
| load-more-txt | “没有更多数”据展示文案 | String | '哎呀,这里是底部了啦' |
| is-open-refresh | 是否开启下拉刷新 | Boolean | false |
| pull-icon | 下拉刷新图标名称 | String | ![]() |
| pull-txt | 下拉刷新提示文案 | String | 松手刷新 |
| load-icon | 上拉加载图标名称 | Boolean | |
| load-txt | 上拉加载提示文案 | String | 加载中... |
| 事件名 | 说明 | 回调参数 |
|---|---|---|
| load-more | 继续加载的回调函数 | done 函数,用于关闭加载中状态 |
| scroll-change | 实时监听滚动高度 | 滚动高度 |
| refresh | 下拉刷新事件回调 | done 函数,用于关闭加载中状态 |