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 ajax学习笔记2 使用XMLHttpRequest对象的responseXML
Oct 16 Javascript
js实现目录定位正文示例
Nov 14 Javascript
jQuery中Dom的基本操作小结
Jan 23 Javascript
AngularJS基础 ng-init 指令简单示例
Aug 02 Javascript
JavaScript中关键字 in 的使用方法详解
Oct 17 Javascript
移动端界面的适配
Jan 11 Javascript
原生js实现放大镜效果
Jan 11 Javascript
jQuery实现可兼容IE6的遮罩功能详解
Sep 19 jQuery
vue路由前进后退动画效果的实现代码
Dec 10 Javascript
vue实现搜索过滤效果
May 28 Javascript
一步一步实现Vue的响应式(对象观测)
Sep 02 Javascript
React 并发功能体验(前端的并发模式)
Jul 01 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
新52大事件
2020/03/03 欧美动漫
PHP 利用AJAX获取网页并输出的实现代码(Zjmainstay)
2012/08/31 PHP
Laravel中任务调度console使用方法小结
2017/05/07 PHP
thinkphp整合系列之极验滑动验证码geetest功能
2019/06/18 PHP
thinkphp5 框架结合plupload实现图片批量上传功能示例
2020/04/04 PHP
javascript通过class来获取元素实现代码
2013/02/20 Javascript
$.get获取一个文件的内容示例代码
2013/09/11 Javascript
JS保留两位小数 四舍五入函数的小例子
2013/11/20 Javascript
JS获取文本框,下拉框,单选框的值的简单实例
2014/02/26 Javascript
javascript顺序加载图片的方法
2015/07/18 Javascript
JavaScript实现横向滑出的多级菜单效果
2015/10/09 Javascript
JavaScript数据结构之链表的实现
2017/03/19 Javascript
vue.js获取数据库数据实例代码
2017/05/26 Javascript
对象不支持indexOf属性或方法的解决方法(必看)
2017/05/28 Javascript
ajax前台后台跨域请求处理方式
2018/02/08 Javascript
vue2.0实现移动端的输入框实时检索更新列表功能
2018/05/08 Javascript
React中如何引入Angular组件详解
2018/08/09 Javascript
微信小程序搭建(mpvue+mpvue-weui+fly.js)的详细步骤
2018/09/18 Javascript
使用JS实现动态时钟
2020/03/12 Javascript
Vue+ElementUI 中级联选择器Bug问题的解决
2020/07/31 Javascript
[02:41]DOTA2英雄基础教程 冥魂大帝
2014/01/16 DOTA
[53:13]2014 DOTA2国际邀请赛中国区预选赛5.21 DT VS LGD-GAMING
2014/05/22 DOTA
[49:08]Secret vs VP 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/20 DOTA
给Python中的MySQLdb模块添加超时功能的教程
2015/05/05 Python
Python自动生成代码 使用tkinter图形化操作并生成代码框架
2019/09/18 Python
python程序需要编译吗
2020/06/19 Python
2021年的Python 时间轴和即将推出的功能详解
2020/07/27 Python
Python 在局部变量域中执行代码
2020/08/07 Python
Pycharm plot独立窗口显示的操作
2020/12/11 Python
瑜伽灵感珠宝:Satya Jewelry
2018/01/06 全球购物
企业厂务公开实施方案
2014/03/26 职场文书
新年主持词
2014/03/27 职场文书
《数星星的孩子》教学反思
2014/04/11 职场文书
党的群众路线整改落实情况汇报
2014/10/28 职场文书
2015年税务稽查工作总结
2015/05/26 职场文书
java设计模式--三种工厂模式详解
2021/07/21 Java/Android