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 相关文章推荐
Javascript 刷新全集常用代码
Nov 22 Javascript
parentElement,srcElement的使用小结
Jan 13 Javascript
JavaScript学习笔记之基础语法
Jan 22 Javascript
JavaScript DOM进阶方法
Apr 13 Javascript
JavaScript中的toLocaleLowerCase()方法使用详解
Jun 06 Javascript
javascript中checkbox使用方法简单实例演示
Nov 17 Javascript
ES6所改良的javascript“缺陷”问题
Aug 23 Javascript
AngularJs  Creating Services详解及示例代码
Sep 02 Javascript
微信小程序 loading 详解及实例代码
Nov 09 Javascript
addEventListener()与removeEventListener()解析
Apr 20 Javascript
利用weixin-java-miniapp生成小程序码并直接返回图片文件流的方法
Mar 29 Javascript
微信sdk实现禁止微信分享(使用原生php实现)
Nov 15 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中开发XML应用程序之基础篇 添加节点 删除节点 查询节点 查询节
2010/07/09 PHP
PHP生成sitemap.xml地图函数
2013/11/13 PHP
php利用新浪接口查询ip获取地理位置示例
2014/01/20 PHP
php连接oracle数据库及查询数据的方法
2014/12/29 PHP
php通过淘宝API查询IP地址归属等信息
2015/12/25 PHP
PHP 文件上传后端处理实用技巧方法
2017/01/06 PHP
PHP实现负载均衡session共享redis缓存操作示例
2018/08/22 PHP
Laravel 集成微信用户登录和绑定的实现
2019/12/27 PHP
自动更新作用
2006/10/08 Javascript
用roll.js实现的图片自动滚动+鼠标触动的特效
2007/03/18 Javascript
使用jscript实现二进制读写脚本代码
2008/06/09 Javascript
jQuery ui 1.7更新小结
2009/08/15 Javascript
尝试在让script的type属性等于text/html
2013/01/15 Javascript
js 表单提交后按钮变灰的实例代码
2013/08/16 Javascript
javascript打印输出json实例
2013/11/11 Javascript
js中的布尔运算符使用介绍
2013/11/20 Javascript
推荐JavaScript实现继承的最佳方式
2014/11/11 Javascript
webpack学习笔记之优化缓存、合并、懒加载
2017/08/24 Javascript
NW.js 简介与使用方法
2018/02/01 Javascript
jQuery实现的点击图片居中放大缩小功能示例
2019/01/16 jQuery
javascript面向对象创建对象的方式小结
2019/07/29 Javascript
Vue Extends 扩展选项用法完整实例
2019/09/17 Javascript
vue项目中使用bpmn为节点添加颜色的方法
2020/04/30 Javascript
[55:39]DOTA2-DPC中国联赛 正赛 VG vs LBZS BO3 第二场 1月19日
2021/03/11 DOTA
自动化Nginx服务器的反向代理的配置方法
2015/06/28 Python
Django之模型层多表操作的实现
2019/01/08 Python
python取余运算符知识点详解
2019/06/27 Python
python深copy和浅copy区别对比解析
2019/12/26 Python
在keras里面实现计算f1-score的代码
2020/06/15 Python
Timberland德国官网:靴子、鞋子、衣服、夹克及配件
2019/12/10 全球购物
竞选班干部演讲稿500字
2014/08/20 职场文书
婚前保证书范文
2015/02/28 职场文书
应届生求职自荐信范文
2015/03/04 职场文书
小学英语听课心得体会
2016/01/14 职场文书
解析CSS 提取图片主题色功能(小技巧)
2021/05/12 HTML / CSS
Python+Selenium实现读取网易邮箱验证码
2022/03/13 Python