一、使用vant的下拉刷新和上拉加载

<div class="parent-container">
	<div class="list-container" res="listContainer" @scroll="onScroll">
		<van-pull-refresh v-model="refreshing" @refresh="onRefresh">
		  <van-list
		    v-model="loading"
		    :finished="finished"
		    finished-text="没有更多了"
		    @load="onLoad"
		  >
		    <van-cell v-for="item in list" :key="item" :title="item" />
		  </van-list>
		</van-pull-refresh>
	</div>
</div>
<script>
export defalut {
	data(){
		return {
			scrollTop: 0,
		    list: [],
		    loading: false,
		    finished: false,
		    refreshing: false,
		}
	},
	activate(){
		// 触发缓存生命周期后,调整滚动位置
		this.$nextTick(res => {
			this.$refs.listContainer.scrollTop = this.scrollTop
		})
	},
	methods:{
		onScroll(e){
			this.scrollTop = e.target.scrollTop
		},
		onLoad() {
	      setTimeout(() => {
	        if (this.refreshing) {
	          this.list = [];
	          this.refreshing = false;
	        }
	
	        for (let i = 0; i < 10; i++) {
	          this.list.push(this.list.length + 1);
	        }
	        this.loading = false;
	
	        if (this.list.length >= 40) {
	          this.finished = true;
	        }
	      }, 1000);
	    },
	    onRefresh() {
	      // 清空列表数据
	      this.finished = false;
	
	      // 重新加载数据
	      // 将 loading 设置为 true,表示处于加载状态
	      this.loading = true;
	      this.onLoad();
	    },
	}
}
</script>
<style>
	.parent-container{
		display: flex;
		flex-direction: colume;
	}
	.list-container{
		flex: 1;
		overflow: auto
	}
</style>

二、外层容器必须固定高度,并且添加overflow: auto,那么如何最好的让容器固定高度呢?!!!

使用flex布局,给容器的父容器设置 display:flex 
列表的容器设置 flex: 1 就会自动填满容器的高度,并且还可以通过添加 overflow: auto 使容器滚动
GitHub 加速计划 / vu / vue
207.54 K
33.66 K
下载
vuejs/vue: 是一个用于构建用户界面的 JavaScript 框架,具有简洁的语法和丰富的组件库,可以用于开发单页面应用程序和多页面应用程序。
最近提交(Master分支:2 个月前 )
73486cb5 * chore: fix link broken Signed-off-by: snoppy <michaleli@foxmail.com> * Update packages/template-compiler/README.md [skip ci] --------- Signed-off-by: snoppy <michaleli@foxmail.com> Co-authored-by: Eduardo San Martin Morote <posva@users.noreply.github.com> 4 个月前
e428d891 Updated Browser Compatibility reference. The previous currently returns HTTP 404. 5 个月前
Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐