官方scroll-view
可滚动视图区域,用于区域滚动。
页面示例
<scroll-view class="list-scroll-content" scroll-y="true" refresher-enabled="true" :refresher-triggered="triggered" :refresher-threshold="100" refresher-background="#fff" @refresherpulling="onPulling" @refresherrefresh="onRefresh" @refresherrestore="onRestore" @refresherabort="onAbort" @scrolltolower="loadData"></scroll-view>
方法示例
// 自定义加载数据loadData(){},// 自定义下拉刷新控件被下拉onPulling(e) {console.log("onpulling", e);},// 自定义下拉刷新被触发onRefresh() {console.log('下拉刷新')if (this._freshing) return;this._freshing = true;setTimeout(() => {this.triggered = false;this._freshing = false;}, 3000)},// 自定义下拉刷新被复位onRestore() {console.log("onRestore");this.triggered = 'restore'; // 需要重置},// 自定义下拉刷新被中止onAbort() {console.log("onAbort");},
自定义上拉加载
思路
用scroll-view判断用户是否下拉,如果下拉就触发loadData去加载数据,并判断是否还有下一页,如果有就设置当前页码+1,状态码为more,否则为nomore,页码不变。
页面示例
<scroll-view class="list-scroll-content" scroll-y @scrolltolower="loadData"><!-- 空白页 --><empty v-if="tabItem.loaded === true && tabItem.orderList.length === 0"></empty><!-- 列表 --><view v-for="(item,index) in list" :key="index" class="order-item"><uni-load-more :status="tabItem.loadingType"></uni-load-more></view></scroll-view>
loadingType: 'more',// 状态码list: [],page: {current: 1,count: null}
方法示例
//获取列表async loadData() {const _this = thisif (_this.loadingType === 'nomore') {//防止重复加载return;}_this.loadingType = 'loading';let list = []await this.$api.list({ //接口p: _this.page.current}).then(res => {_this.page.count = res.countres.data.forEach(item => {_this.list.push(item)})}).catch(err => {_this.$api.msg(err)})//判断是否还有数据, 有改为 more, 没有改为nomore_this.loadingType = _this.list.length < _this.page.count ? 'more' : 'nomore'_this.page.current = _this.list.length < _this.page.count ? _this.page.current + 1 : _this.page.current}

