首页 > 技术文章 > vue之vant组件上拉加载更多

xiaobaibubai 2019-10-22 15:15 原文

vant地址:https://youzan.github.io/vant/#/zh-CN/intro

基础用法

List 组件通过loadingfinished两个变量控制加载状态,当组件滚动到底部时,会触发load事件并将loading设置成true。此时可以发起异步操作并更新数据,数据更新完毕后,将loading设置成false即可。若数据已全部加载完毕,则直接将finished设置成true即可。

<van-list
  v-model="loading"
  :finished="finished"
  finished-text="没有更多了"
  @load="onLoad"
>
  <van-cell
    v-for="item in moreList"
    :key="item"
    :title="item"
  />
</van-list>
export default {
  data() {
    return {
      moreList: [],
      loading: false,
      finished: false,
    pageNume:1,
    pageSize:10,
    loadTag:
1 //标记是否触发onLoad函数 }; }, methods: { onLoad() {          if(this.loadTag==1){       //请求接口得到数据给list数组   this. getMoreData()    this.loadTag=0;        setTimeout(() => { // 加载状态结束 this.loading = false; }, 500);     }      }, getMoreData(){ let params={"pageNum":this.pageNum,"pageSize":this.pageSize} getInformationMore(params).then(res =>{ console.log(res) if(res.data.code==200){ let data=res.data.data; console.log(this.pageNum) for(let i=0;i<data.length;i++){ this.moreList.push(data[i]); } let total=this.moreList[0].total; let end=this.moreList.length; // 数据全部加载完成 if (end>=total) { this.finished = true; this.loadTag=0; return; } this.pageNum++; this.loadTag=1; }else{ this.$toast(res.data.msg); this.finished = true; this.loadTag=0; } }) } } }

 

  

 

API

Props

参数说明类型默认值版本
v-model 是否处于加载状态,加载过程中不触发load事件 boolean false -
finished 是否已加载完成,加载完成后不再触发load事件 boolean false -
error 是否加载失败,加载失败后点击错误提示可以重新
触发load事件,必须使用sync修饰符
boolean false -
offset 滚动条与底部距离小于 offset 时触发load事件 number 300 -
loading-text 加载过程中的提示文案 string 加载中... -
finished-text 加载完成后的提示文案 string - -
error-text 加载失败后的提示文案 string - -
immediate-check 是否在初始化时立即执行滚动位置检查 boolean true -
direction 滚动触发加载的方向,可选值为up string down -

Events

事件名说明回调参数
load 滚动条与底部距离小于 offset 时触发 -

方法

通过 ref 可以获取到 list 实例并调用实例方法

方法名说明参数返回值
check 检查当前的滚动位置,若已滚动至底部,则会触发 load 事件 - -

Slots

名称说明
default 列表内容
loading 自定义底部加载中提示

推荐阅读