Vue.js 的移动端组件库mint-ui实现无限滚动加载更多的方法


Posted in Javascript onDecember 23, 2017

通过多次爬坑,发现了这些监听滚动来加载更多的组件的共同点,

因为这些加载更多的方法是绑定在需要加载更多的内容的元素上的,

所以是进入页面则直接触发一次,当监听到滚动事件之后,继续加载更多,

所以对于无限滚动加载不需要写首次载入列表的函数,

代码如下:

html:

//父组件
<div v-infinite-scroll="loadMore" infinite-scroll-disabled="loading" infinite-scroll-distance="1000">
   <LifeLists :loadingTextBtn="loadingTextBtn" :loadingText="loadingText" :loadingComplete="loadingComplete" :lifeList="lifeList"></LifeLists>
</div>
//LifeLists组件:
<LifeListItem :lists="lifeList"></LifeListItem>
  <div class="loading-text" v-show="{loadingTextBtn:true}">
   <span v-text="loadingText"></span>
   <mt-spinner v-if="(loadingComplete==false)" type="snake" :size="16"></mt-spinner>
</div>
LifeListItem组件:
<div id="lifeListItemBox">
<router-link v-for="(item,index) in lists" :to="{name:'lifeDetails',params:{id:item.id}}" :key="index">
   <div class="lifeListItem1" v-if="(item.status=='online')">
   <div v-if="(item.hasPrice==true)">
    <div class="title1">{{item.title}}</div>
    <div class="price">
    <b class="now"><span class="unit">{{item.monetaryUnit}}</span>{{item.price}}</b>
    </div>
   </div>
   <div v-else class="title2">{{item.title}}</div>
   <div class="info">
    发布于{{formatTime(item.createAt)}}
        
    {{item.countryName}} {{item.cityName}}
   </div>
   <div class="imageList">
    <img :src="img" alt="" v-for="(img,index) in item.photos">
   </div>
   <div class="content">{{item.detail}}</div>
   <div class="listBar">
    <div class="iconBox">
    <svg class="icon icon-dianzan" aria-hidden="true">
     <use xlink:href="#icon-dianzan" rel="external nofollow" ></use>
    </svg>
    {{item.like}}
    </div>
    <div class="iconBox">
    <svg class="icon icon-pinglun2" aria-hidden="true">
     <use xlink:href="#icon-pinglun2" rel="external nofollow" ></use>
    </svg>
    {{item.commentCount}}
    </div>
   </div>
   </div>
  </router-link>
</div>

vue.js

data:

page:0,
  size:10,
  loadingTextBtn:false,
  loadingText:"努力加载中",
  loadingComplete:false,
  refreshComplete:false,
  city:"",
  country:""

methods:

loadMore() {
  this.loading = true;
  this.loadingTextBtn=true;
  if(parseInt(this.page)==0){
   this.$store.dispatch('loadMoreLifeList',{city:"纽约",country:"美国",category:"",page:this.page,size:this.size});
   this.page++;
  }else if(parseInt(this.page)>0&&parseInt(this.page)<parseInt(this.totalPages)){
   setTimeout(() => {
 //   this.$store.dispatch('loadMoreLifeList',{city:this.city,country:this.country,category:"",page:this.page,size:this.size})
    this.$store.dispatch('loadMoreLifeList',{city:"纽约",country:"美国",category:"",page:this.page,size:this.size});
    this.page++;
   }, 1000);
  }else{
   this.loadingText="已全部加载完成";
   this.loadingComplete=true;
   this.loading = false;
  }
  },

这里重要的是判断,当当前页面为0的时候,即第一页的时候,不需要setTimeout定时器,直接请求加载,当加载更多的时候可以加个定时器。

网上找到很多mint-ui 的loadmore组件来实现上拉加载更多,由于上拉触发相应的加载更多事件,所以当进入页面的时候应该不会自动载入数据,则这里可以加一个获取第一页数据的函数。

以上这篇Vue.js 的移动端组件库mint-ui实现无限滚动加载更多的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
jquery 打开窗口返回值实现代码
Mar 04 Javascript
Jquery读取URL参数小例子
Aug 30 Javascript
基于jquery实现一张图片点击鼠标放大再点缩小
Sep 29 Javascript
jquery中的on方法使用介绍
Dec 29 Javascript
JavaScript通过select动态更换图片的方法
Mar 23 Javascript
JS右下角广告窗口代码(可收缩、展开及关闭)
Sep 04 Javascript
IScroll5 中文API参数说明和调用方法
May 21 Javascript
手机端转换rem适应
Apr 01 Javascript
php简单数据库操作类的封装
Jun 08 Javascript
Node.js原生api搭建web服务器的方法步骤
Feb 15 Javascript
JavaScript监听一个DOM元素大小变化
Apr 26 Javascript
vue+element UI实现树形表格
Dec 29 Vue.js
9种使用Chrome Firefox 自带调试工具调试javascript技巧
Dec 22 #Javascript
JavaScript中的一些隐式转换和总结(推荐)
Dec 22 #Javascript
原生JS写Ajax的请求函数功能
Dec 22 #Javascript
原生JS控制多个滚动条同步跟随滚动效果
Dec 22 #Javascript
使用vue-cli+webpack搭建vue开发环境的方法
Dec 22 #Javascript
通过vue-cli来学习修改Webpack多环境配置和发布问题
Dec 22 #Javascript
vue 系列——vue2-webpack2框架搭建踩坑之路
Dec 22 #Javascript
You might like
PHP下MAIL的另一解决方案
2006/10/09 PHP
ThinkPHP中公共函数路径和配置项路径的映射分析
2014/11/22 PHP
php创建多级目录的方法
2015/03/24 PHP
PHP解密Unicode及Escape加密字符串
2015/05/17 PHP
JavaScript多线程的实现方法
2007/05/08 Javascript
Javascript学习笔记一 之 数据类型
2010/12/15 Javascript
javascript获取当前日期时间及其它操作函数
2011/01/11 Javascript
基于Jquery制作的幻灯片图集效果打包下载
2011/02/12 Javascript
工作需要写的一个js拖拽组件
2011/07/28 Javascript
jquery的flexigrid无法显示数据提示获取到数据
2013/07/19 Javascript
js+HTML5实现视频截图的方法
2015/06/16 Javascript
BootStrap下拉菜单和滚动监听插件实现代码
2016/09/26 Javascript
微信小程序 Storage API实例详解
2016/10/02 Javascript
Node.js连接postgreSQL并进行数据操作
2016/12/18 Javascript
JS实现滑动门效果的方法详解
2016/12/19 Javascript
Bootstrap实现渐变顶部固定自适应导航栏
2020/08/27 Javascript
ES6新特性八:async函数用法实例详解
2017/04/21 Javascript
JS实现多级菜单中当前菜单不随页面跳转样式而发生变化
2017/05/30 Javascript
使用html+js+css 实现页面轮播图效果(实例讲解)
2017/09/21 Javascript
JavaScript 2018 中即将迎来的新功能
2018/09/21 Javascript
axios实现文件上传并获取进度
2020/03/25 Javascript
python通过shutil实现快速文件复制的方法
2015/03/14 Python
实例解析Python中的__new__特殊方法
2016/06/02 Python
浅谈python编译pyc工程--导包问题解决
2019/03/20 Python
flask框架单元测试原理与用法实例分析
2019/07/23 Python
python KNN算法实现鸢尾花数据集分类
2019/10/24 Python
如何解决tensorflow恢复模型的特定值时出错
2020/02/06 Python
python re模块匹配贪婪和非贪婪模式详解
2020/02/11 Python
Python爬取你好李焕英豆瓣短评生成词云的示例代码
2021/02/24 Python
世界上最大的在线学习和教学市场:Udemy
2017/11/08 全球购物
Sunglass Hut巴西网上商店:男女太阳镜
2020/10/04 全球购物
.TTL是什么?有什么用处,通常那些工具会用到它?(ping? traceroute? ifconfig? netstat?)
2016/05/09 面试题
小学生美德少年事迹材料
2014/08/24 职场文书
员工2014年度工作总结
2014/12/09 职场文书
师德师风学习材料
2014/12/19 职场文书
创业计划书之废品回收
2019/09/26 职场文书