记录一个van-list不断onLoad加载的坑及解决

目录
  • van-list不断onLoad加载的坑
    • 我这里出现不断加载的原因是
  • van-list列表下拉加载更多onLoad事件
    • 重点总结

van-list不断onLoad加载的坑

van-list 下拉的时候,不断请求后台加载数据,真的是坑。。。。

this.$http.post(url, params).then(function (res) { 
this.list = [];
if (res.data.data.length == 0) {
    that.finished = true
} else {
    that.list = [...that.list , ...res.data.data]
}
that.loading = false
 
      }).catch((reason) => {
         Toast.fail("查询列表数据!" + reason);
      })

首先说下出现不断加载的一种情况, 解决方法是设置:offset="20";

这是网上常说的,然而并没有什么卵用。。。

我这里出现不断加载的原因是

this.list = [];

坑爹,不能清空,清空之后就会判断没填满空间,就会不断加载。。。。

van-list列表下拉加载更多onLoad事件

van-list是瀑布流滚动加载,用于展示长列表,当列表即将滚动到底部时,会触发事件并加载更多列表项。

引入

import Vue from 'vue';
import { List } from 'vant';
 
Vue.use(List);

页面渲染

<van-list class="mylist"
     v-model="loading"
     :finished="finished"
     finished-text="没有更多了"
     @load="onLoad"  >
     <van-cell v-for="(item,index) in list" :key="index" class="mycell">
        {{item.name}}
     </van-cell>
</van-list>

数据定义

export default {
  data() {
    return {
      list: [],
      loading: false,
      finished: false,
      total: 0,
      // 查询参数
      queryParams: {
           pageNum: 0,
           pageSize: 6,
           deptname: null,
           username: null,
           createTime: null,
           jigou: null,
       },
       defaultdept:null,
       keyWords:"",
    };
  },
}

方法实现

methods:{ 
        async onLoad() {
            this.loading = true;//防止第一页重复加载
            this.queryParams.jigou = this.defaultdept
            listWuzicount(this.queryParams).then(res => {
                this.total = res.total;
                if(this.total <= this.queryParams.pageSize){
                    this.list= res.rows
                }else{
                    this.queryParams.pageNum++;
                    let arr = res.rows;
                    this.list= this.list.concat(arr);
                };
                // 加载状态结束
                this.loading = false;
                // 数据全部加载完成
                if (this.list.length >= this.total) {
                    this.finished = true;
                }
            })
        },
},
watch:{
        defaultdept(val){
            this.queryParams.jigou = val
            this.list= []
            this.queryParams.pageNum = 1
            this.finished = false;
            this.onLoad();
        },
        keyWords(val){
            this.queryParams.deptname = val
            this.list= []
            this.queryParams.pageNum = 1
            this.finished = false;
            this.onLoad();
        },
    }

重点总结

this.queryParams.pageNum = 1
//每次走完函数,将当前页恢复至1,防止后面累加,导致点击别的筛选条件时无效,返回finished-text
this.finished = false;
//同样,也要将finished恢复,否则,执行别的筛选条件时,会显示finished-text,并且导致明明还有数据,但是不会加载出来.

以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

  • vant之van-list的使用及踩坑记录

    第一步:要使用vant组件 安装好vant,npm i vant -S 第二步:在你要用到的地方js中引入 或者在src/main.js里面引入 import Vue from 'vue'; import { List } from 'vant'; Vue.use(List); 这里我引入的地方是我要用到的js文件中 第三步:在template中引用 第四步:js中重要代码 data(){ return{ content_list: [], loading: false,//加载状态 finis

  • 解决vant中 tab栏遇到的坑 van-tabs

    话不多说,先看下问题描述: 我的需求:(和头条的tab栏类似 ,单击查看头条tab栏) 点击tab栏,下方展示出来当前tab栏下的内容列表(A页面),点击列表进入详情内容(B页面),但是返回(A页面)的时候,需要显示刚才被点击的tab栏高亮显示.(如果tab栏横向有滚动条,那也得让被选中的高亮显示). 所以,大部分人的解决办法就是将当前选中的tab的索引缓存起来,等回到该页面的时候,让被缓存的那个高亮显示出来. 坑的问题在于:van-tabs,里面的v-model默认值是0,但是类型却写着 nu

  • vant 中van-list的用法说明

    van-list里面的元素不能有float样式,否则会连续触发 load 事件 原代码 <template> <div class="about"> <van-tabs v-model="active" sticky @change="getTypeDate"> <van-tab v-for="(tab) in typeList" :title="tab.name"

  • 记录一个van-list不断onLoad加载的坑及解决

    目录 van-list不断onLoad加载的坑 我这里出现不断加载的原因是 van-list列表下拉加载更多onLoad事件 重点总结 van-list不断onLoad加载的坑 van-list 下拉的时候,不断请求后台加载数据,真的是坑.... this.$http.post(url, params).then(function (res) {  this.list = []; if (res.data.data.length == 0) {     that.finished = true

  • ant-design-vue按需加载的坑的解决

    问题 在vue-cli4.x中按需加载ant-design-vue,在编译时报错,错误如下 原因 ant-design-vue使用less预处理器.在less3.0版本以前,javascriptEnabled属性默认为true,3.0以后默认为false.地址 目前项目中less版本为3.0.4,所以在编译中会报错 解决办法 第一种办法,在vue.config.js中添加如下配置 css: { loaderOptions: { less: { javascriptEnabled: true }

  • js 一个关于图片onload加载的事

    首先先明确一下我要的目的: 当用户进入页面的时候,显示loading 加载图标,等最大的图片加载之后再opacity 图片; 功能很简单,但是很蛋疼的是,我没完全做出来: 在做的时候,第一时间我自然想到了如下的方法: 复制代码 代码如下: $(function(){    $('.banner img').load(function(){        console.log('已经加载')        });}); 熟话说的好呀,自信心太膨胀,到头来打击很大了:我以为这样就可以了,然后看了一

  • asp.net 未能加载文件或程序集“XXX”或它的某一个依赖项。试图加载格式不正确的程序。

    说明: 执行当前 Web 请求期间,出现未处理的异常.请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息. 异常详细信息: System.BadImageFormatException: 未能加载文件或程序集"XXX"或它的某一个依赖项.试图加载格式不正确的程序. 源错误: 执行当前 Web 请求期间生成了未处理的异常.可以使用下面的异常堆栈跟踪信息确定有关异常原因和发生位置的信息. 程序集加载跟踪: 下列信息有助于确定程序集"XXX"无法加载的

  • 未能加载文件或程序集“XXX”或它的某一个依赖项。试图加载格式不正确的程序。

    "/xxxxx"应用程序中的服务器错误. -------------------------------------------------------------------------------- 未能加载文件或程序集"xxx"或它的某一个依赖项.试图加载格式不正确的程序. 说明: 执行当前 Web 请求期间,出现未处理的异常.请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息. 异常详细信息: System.BadImageFormatE

  • 实现一个Vue自定义指令懒加载的方法示例

    在项目中如果有大量的图片需要加载的时候,就可以考虑使用懒加载了,懒加载其实就是监听浏览器的滚动,当滚动到一定的范围的时候就将图片的真实路径赋给src,然后取消监听.实现的方法也比较简单,可以通过懒加载的插件实现,也可以手写,手写通过vue自定义指令来实现,一般情况自定义指令用的也不多,比较vue自带的就够用了,大型复杂的项目的可能用的多. 什么是图片懒加载 当我们向下滚动的时候图片资源才被请求到,这也就是我们本次要实现的效果,进入页面的时候,只请求可视区域的图片资源这也就是懒加载. 比如我们加载

  • easyui datagrid 大数据加载效率慢,优化解决方法(推荐)

    在使用easyui datagrid途中发现加载数据的效率真的不是一般的差.经测试IE8加载300条数据就感觉明显的慢了,加载2000条数据就另人崩溃用时差不多60秒,就算在google浏览器测试结果也快不了几秒. 平时听闻easyui datagrid效率底下,自己测试才发现真是使人无法忍受. 笔者只好百度,google解决方法,发现一篇文章说改 //1.3.3版本是这样的,其它版本也是这句代码 $(_1e0).html(_1e4.join("")); 改为: $(_1e0)[0].

  • React Native 真机断点调试+跨域资源加载出错问题的解决方法

    写在前面 闲来无事,折腾了一下React Native,相比之前,开发体验好了不少.但在真机断点调试那里遇到了跨域资源加载出错的问题,一番探索总算解决,目测是RN新版本调试服务的bug. 遇到类似问题的同学应该不少,这里做下记录,有需要的可以参考下. 如何断点调试 首先,在真机上加载运行RN应用(过程略). 然后,摇动手机,弹出开发菜单,选择"Debug JS Remotely". chrome会自动打开调试界面,地址是 http://localhost:8081/debugger-u

  • 基于vue 动态加载图片src的解决方法

    好久没更博了,最近也不知道在忙啥,反正就是感觉挺忙的,在群里看到陆陆续续有刚入vue小伙伴问vue动态加载图片总是404的状况,这篇就简单的说明为什么会出现以及解决办法有哪些. 首先先说明下vue-cli的assets和static的两个文件的区别,因为这对你理解后面的解决办法会有所帮助 assets:在项目编译的过程中会被webpack处理解析为模块依赖,只支持相对路径的形式,如< img src="./logo.png">和background:url(./logo.p

  • 基于webpack-hot-middleware热加载相关错误的解决方法

    错误1:找不到__webpack_hmr GET http://127.0.0.1/__webpack_hmr 404 (Not Found) 在webpack的entry配置添加引用路径'webpack-hot-middleware/client?path=/__webpack_hmr&timeout=10000&reload=true',相关的参数最好不要省略,否则会出现无法自动刷新的问题. 处理脚本如下: // 准备webpack配置信息 let hotMiddlewareScrip

随机推荐