vue底部加载更多的实例代码


Posted in Javascript onJune 29, 2018

要实现的效果如下:

vue底部加载更多的实例代码

<template>
 <div class="newsList">
  <div v-for="(items, index) in newsList">
   <div class="date">{{showDay(index)}}</div>
   <div class="list" >
    <ul>
     <li class="list-item" v-for="item in items">
      <span class="text">{{item.title}}</span>
      <img :src="attachImageUrl(item.images[0])" class="image"/>
     </li>
    </ul>
   </div>
  </div>
  <div class="infinite-scroll" v-show="loading">
   <svg class="loader-circular" viewBox="25 25 50 50">
    <circle class="loader-path" cx="50" cy="50" r="20" fill="none" stroke="rgb(53, 157, 218)" stroke-width="5"></circle>
   </svg>
   <span class="infinite-scroll-text">{{tips}}</span>
  </div>
 </div>
</template>
<script>
 import axios from 'axios';
 export default {
  data () {
   return {
    newsList: [],
    date: [],
    todayDate: '',
    REQUIRE: true,
    loading: false,
    tips: '努力加载中...'
   }
  },
  created () {
   // 获取今日新闻
   axios.get('http://zhihuapi.herokuapp.com/api/4/news/latest')
    .then( (res) => {
    this.newsList.push(res.data['stories'])
    this.date.push(res.data['date']);
    this.todayDate = res.data['date']
   })
  },
  mounted () {
   // 添加滚动事件,检测滚动到页面底部
   window.addEventListener('scroll', this.scrollBottom)
  },
  methods: {
   scrollBottom() {
    // 滚动到页面底部时,请求前一天的文章内容
    if (((window.screen.height + document.body.scrollTop) > (document.body.clientHeight)) && this.REQUIRE) {
     // 请求的数据未加载完成时,滚动到底部不再请求前一天的数据
     this.REQUIRE = false;
     this.loading = true;
     this.tips = '努力加载中...';
     axios.get('http://zhihuapi.herokuapp.com/api/4/news/before/' + this.todayDate).then((res) => {
      this.newsList.push(res.data['stories']);
     this.date.push(res.data['date']);
     this.todayDate = res.data['date'];
     // 请求的数据加载完成后,再次滚动到底部时,允许请求前一天数据
     this.$nextTick(() => {
      this.REQUIRE = true;
      this.loading = false;
     });
    }).catch(() => {
      this.tips = '连接失败,请稍后重试';
     // 请求失败时,将 REQUIRE 置为 true,滚动到底部时,再次请求
     this.REQUIRE = true;
    });
    }
   },
   showDay (index) {
    if (index === 0) {
     return '今日新闻'
    } else {
     return this.getToday(index)
    }
   },
   getToday (index) {
    let year = this.date[index].slice(0, 4);
    let month = this.date[index].slice(4, 6);
    let day = this.date[index].slice(6);
    let today = new Date(year + '/' + month + '/' + day);
    let week = ['日', '一', '二', '三', '四', '五', '六'];
    return month + '月' + day + '日' + ' 星期' + week[today.getDay()];
   },
   attachImageUrl (srcUrl) {
    if (srcUrl !== undefined) {
     return 'http://read.html5.qq.com/image?src=forum&q=5&r=0&imgflag=7&imageUrl=' + srcUrl.slice(0, 4) + srcUrl.slice(5);
    }
   }
  }
 }
</script>

总结

以上所述是小编给大家介绍的vue底部加载更多的实例代码,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
javascript编程起步(第一课)
Jan 10 Javascript
判断目标是否是window,document,和拥有tagName的Element的代码
May 31 Javascript
深入分析js中的constructor和prototype
Apr 07 Javascript
javascript如何使用bind指定接收者
May 04 Javascript
js选项卡的实现方法
Feb 09 Javascript
jQuery实现的输入框选择时间插件用法实例
Feb 28 Javascript
jQuery插件实现控制网页元素动态居中显示
Mar 24 Javascript
TypeScript 学习笔记之基本类型
Jun 19 Javascript
Angularjs处理页面闪烁的解决方法
Mar 09 Javascript
angularjs 的数据绑定实现原理
Jul 02 Javascript
详解Vue基于vue-quill-editor富文本编辑器使用心得
Jan 03 Javascript
详解babel升级到7.X采坑总结
May 12 Javascript
使用vue打包时vendor文件过大或者是app.js文件很大的问题
Jun 29 #Javascript
vue项目打包后打开页面空白解决办法
Jun 29 #Javascript
详解Vue webapp项目通过HBulider打包原生APP
Jun 29 #Javascript
Vue下路由History模式打包后页面空白的解决方法
Jun 29 #Javascript
详解Vue微信授权登录前后端分离较为优雅的解决方案
Jun 29 #Javascript
JavaScript实现仿Clock ISO时钟
Jun 29 #Javascript
vue ssr 指南详读
Jun 29 #Javascript
You might like
解析在PHP中使用mysqli扩展库对mysql的操作
2013/07/03 PHP
PHP防止post重复提交数据的简单例子
2014/06/07 PHP
PHP实现多图片上传类实例
2014/07/26 PHP
Centos 6.5下PHP 5.3安装ffmpeg扩展的步骤详解
2017/03/02 PHP
php通过header发送自定义数据方法
2018/01/18 PHP
php设计模式之组合模式实例详解【星际争霸游戏案例】
2020/03/27 PHP
JavaScript中Null与Undefined的区别解析
2015/06/30 Javascript
bootstrap制作jsp页面(根据值让table显示选中)
2017/01/05 Javascript
Vue2.0 UI框架ElementUI使用方法详解
2017/04/14 Javascript
vux-scroller实现移动端上拉加载功能过程解析
2019/10/08 Javascript
vue调用微信JSDK 扫一扫,相册等需要注意的事项
2021/01/03 Vue.js
在nodejs中创建child process的方法
2021/01/26 NodeJs
[56:18]VGJ.S vs Secret 2018国际邀请赛小组赛BO2 第二场 8.16
2018/08/17 DOTA
[57:41]Secret vs Serenity 2018国际邀请赛小组赛BO2 第一场 8.16
2018/08/17 DOTA
总结Python中逻辑运算符的使用
2015/05/13 Python
Python基于正则表达式实现检查文件内容的方法【文件检索】
2017/08/30 Python
python爬虫获取小区经纬度以及结构化地址
2018/12/30 Python
一篇文章了解Python中常见的序列化操作
2019/06/20 Python
python3.6 如何将list存入txt后再读出list的方法
2019/07/02 Python
Python实现ATM系统
2020/02/17 Python
Python如何使用bokeh包和geojson数据绘制地图
2020/03/21 Python
20行Python代码实现视频字符化功能
2020/04/13 Python
Python爬虫中Selenium实现文件上传
2020/12/04 Python
localStorage的过期时间设置的方法详解
2018/11/26 HTML / CSS
JD Sports比利时官网:英国领先的运动鞋和运动服饰零售商
2018/10/10 全球购物
Ibatis中如何提高SQL Map的性能
2013/05/11 面试题
安全生产汇报材料
2014/02/17 职场文书
求职简历自荐信
2014/06/18 职场文书
2014年老干部工作总结
2014/11/21 职场文书
灵山大佛导游词
2015/02/04 职场文书
一篇合格的广告文案,其主要目的是什么?
2019/07/12 职场文书
Ajax请求超时与网络异常处理图文详解
2021/05/23 Javascript
Python竟然能剪辑视频
2021/05/25 Python
浅谈redis整数集为什么不能降级
2021/07/25 Redis
Html5获取用户当前位置的几种方式
2022/01/18 HTML / CSS
JAVA 线程池(池化技术)的实现原理
2022/04/28 Java/Android