vue中vant-list组件实现下拉刷新,上滑加载

摘要:
当后端返回的数据是完整的(不是按pageSize和pageNum分组发送的)时,前端需要编写更多的js来使用vant list实现延迟加载,并记录main.js:Vue。使用(列表);Vue.use(PullRefresh);模板:˂van listv mode

后端返回的数据是一股脑的情况(不是按pageSize,pageNum一组一组的发送)时,前端使用vant-list实现懒加载需要再写一点js,记录一下

vue中vant-list组件实现下拉刷新,上滑加载第1张

 main.js:

Vue.use(List);
Vue.use(PullRefresh);
template:
<van-pull-refresh v-model="refreshing" @refresh="onRefresh">
      <van-list
        v-model="loading"
        :finished="finished"
        finished-text="没有更多数据了"
        @load="onLoad">
        <div class="listOne" v-for="(item,index) in listAll" :key="index" v-show='item.arrtFlag'>           对原先渲染的对象名更改
             //每一条数据渲染的标签内,这里仅以index为例
            <span>{{index}}</span>
        </div>
     </van-list>
</van-pull-refresh>
data(){
      return{
         matchList:[],
         listAll: [],
         loading: false,
         finished: false,
         refreshing: false,
         dataLength:0, //原数组长度
         count: 0,
      }
    },
methods:{
    getfmatch(){
        // 一系列操作(请求接口,处理数据准备渲染页面的data)
        this.matchList = data
        this.dataLength = data.length
  },
   
 onLoad() {
        setTimeout(() => {
          if (this.refreshing) {
            this.listAll = [];
            this.refreshing = false;
          }
          this.count++
          console.log(this.count)                                       //打印当前上滑次数,按每次递增10条将this.matchList的每一条放进大数组listAll
          this.listAll = []
          for (let i = 0; i < 10*this.count; i++) {
            this.listAll.push(this.matchList[i]);
          }
          this.listAll = this.listAll.filter(item => item)          //因为是按10的倍数push数据,产生的undefined项需要被移除
          this.loading = false;
          if (this.listAll.length >= this.dataLength) {          //防止重复push  
            this.finished = true;
          }
        }, 800);
      },
      onRefresh() {
        // 清空列表数据
        this.finished = false;

        // 重新加载数据
        // 将 loading 设置为 true,表示处于加载状态
        this.loading = true;
        this.onLoad();
      },
}

免责声明:文章转载自《vue中vant-list组件实现下拉刷新,上滑加载》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇使用emmylua调试slualinux嵌入式qt的屏幕旋转与字体大小问题下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

vue 手指长按触发事件

按钮 <span @touchstart="gtouchstart()" @touchmove="gtouchmove()" @touchend="gtouchend()">按住说话</span> data数据定义一个定时器 timeOutEvent:0,//定时器 方法         gtouchstart(){...

vue 高德地图 地图初始化显示接口返回的多个经纬度

npm 安装 依赖。 npm install vue-amap --save mian.js 中注册import VueAMap from 'vue-amap';Vue.use(VueAMap);VueAMap.initAMapApiLoader({key: '高德的key',//高德的keyplugin: ['AMap.Autocomplete', 'A...

在vue项目中stylus的安装及使用

Stylus是一个CSS预处理器。 Stylus安装包安装: dell@DESKTOP-KD0EJ4H MINGW64 /f/gsff-frone $ cnpm install stylus --save-dev √ Installed 1 packages √ Linked 14 latest versions √ Run 0 scripts...

前端工程化,组件化,模块化,层次化

个人认为:前端发展的导向是前端工程化,智能化,模块化,组件化,层次化。 一个项目的开发逐渐在人工智能+物联网的时代,走向以下的五化     原因: Web前端页面的开发必然与DOM进行交互操作,前端框架的一次次更新,是从满足目前的业务需求到提升效率的阶段,慢慢走向改善性能的阶段(开发和部署环境优化,代码优化,网站性能优化,数据优化,页面优化等等)。 1.前...

2020前端面试题常问集锦

以下为常备面试题集锦,面好多家公司大都问的如此(后续更新补);还有一些算法和手写代码后面整理; js陈述类型1、Es6的class和构造函数的区别: class xx { }(1)不存在变量提升(2)方法默认是不可枚举的,class所有方法没有原型对象prototype也没有构造器不能用new来调用; 2、普通函数和箭头函数的区别?(1)this指向不...

Vue笔记(三):Components—slot

Solt - 内容分发 父组件模板的内容在父组件作用域内编译,子组件模板的内容在子组件作用域内编译。 组件的作用域相互独立,子组件中定义的数据只能在子组件模板内使用,父组件也如此。如果子组件想要使用父组件的数据,需要子组件定义 props 属性来实现。 为了让组件可以组合,我们需要一种方式来混合父组件的内容与子组件自己的模板,这个过程被称为内容分发。Vue...