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 相关文章推荐
40个有创意的jQuery图片和内容滑动及弹出插件收藏集之二
Dec 31 Javascript
js获取光标位置和设置文本框光标位置示例代码
Jan 09 Javascript
JS下载文件|无刷新下载文件示例代码
Apr 17 Javascript
jquery用offset()方法获得元素的xy坐标
Sep 06 Javascript
javascript 动态创建表格的2种方法总结
Mar 04 Javascript
JQuery中DOM事件合成用法实例分析
Jun 13 Javascript
JavaScript中实现无缝滚动、分享到侧边栏实例代码
Apr 06 Javascript
Angularjs渲染的 using 指令的星级评分系统示例
Nov 09 Javascript
Bootstrap fileinput 上传新文件移除时触发服务器同步删除的配置
Oct 08 Javascript
layui固定下拉框的显示条数(有滚动条)的方法
Sep 10 Javascript
JS实现横向轮播图(中级版)
Jan 18 Javascript
vscode 使用Prettier插件格式化配置使用代码详解
Aug 10 Javascript
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生成图片验证码的方法
2016/04/15 PHP
php微信公众平台开发(一) 配置接口
2016/12/06 PHP
javascript省市区三级联动下拉框菜单实例演示
2015/11/29 Javascript
jQuery插件实现文字无缝向上滚动效果代码
2016/02/25 Javascript
全面解析Angular中$Apply()及$Digest()的区别
2016/08/04 Javascript
jQuery文本框得到与失去焦点动态改变样式效果
2016/09/08 Javascript
jQuery css() 方法动态修改CSS属性
2016/09/25 Javascript
JavaScript的变量声明提升问题浅析(Hoisting)
2016/11/30 Javascript
jQuery实现手机上输入后隐藏键盘功能
2017/01/04 Javascript
ES6教程之for循环和Map,Set用法分析
2017/04/10 Javascript
angular2中router路由跳转navigate的使用与刷新页面问题详解
2017/05/07 Javascript
十分钟带你快速了解React16新特性
2017/11/10 Javascript
angular1.x ui-route传参的三种写法小结
2018/08/31 Javascript
[26:50]2018完美盛典DOTA2表演赛
2018/12/17 DOTA
举例讲解Python中is和id的用法
2015/04/03 Python
用Python编写一个基于终端的实现翻译的脚本
2015/04/24 Python
Python聚类算法之DBSACN实例分析
2015/11/20 Python
一张图带我们入门Python基础教程
2017/02/05 Python
PyQt5每天必学之像素图控件QPixmap
2018/04/19 Python
Python爬虫将爬取的图片写入world文档的方法
2018/11/07 Python
python opencv实现证件照换底功能
2019/08/19 Python
python和php学习哪个更有发展
2020/06/17 Python
使用Python-OpenCV消除图像中孤立的小区域操作
2020/07/05 Python
基于python的opencv图像处理实现对斑马线的检测示例
2020/11/29 Python
美国波西米亚风格服装品牌:Show Me Your Mumu
2018/01/05 全球购物
Math.round(11.5)等於多少? Math.round(-11.5)等於多少?
2015/01/27 面试题
小学生新学期寄语
2014/01/19 职场文书
在校生自我鉴定
2014/01/23 职场文书
初一家长会邀请函
2014/01/31 职场文书
学校副校长四风对照检查材料整改措施
2014/09/25 职场文书
我的兄弟姐妹观后感
2015/06/15 职场文书
个人落户申请书怎么写?
2019/06/28 职场文书
PHP基本语法
2021/03/31 PHP
Pytorch distributed 多卡并行载入模型操作
2021/06/05 Python
VUE使用draggable实现组件拖拽
2022/04/06 Vue.js
科学家研发出新型速效酶,可在 24 小时内降解塑料制品
2022/04/29 数码科技