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 相关文章推荐
JQuery 构建客户/服务分离的链接模型中Table分页代码效率初探
Jan 22 Javascript
jquery validate使用攻略 第四步
Jul 01 Javascript
jquery 选择器引擎sizzle浅析
Feb 06 Javascript
JS 获取浏览器和屏幕宽高等信息的实现思路及代码
Jul 31 Javascript
js对象的复制继承实例
Jan 10 Javascript
JavaScript分页功能的实现方法
Apr 25 Javascript
JavaScript中用于四舍五入的Math.round()方法讲解
Jun 15 Javascript
jquery+CSS3模拟Path2.0动画菜单效果代码
Aug 31 Javascript
node.js学习之交互式解释器REPL详解
Dec 08 Javascript
JavaScript屏蔽Backspace键的实现代码
Nov 02 Javascript
node.js博客项目开发手记
Mar 16 Javascript
Node.js console控制台简单用法分析
Jan 04 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
全国FM电台频率大全 - 4 山西省
2020/03/11 无线电
php下一个阿拉伯数字转中文数字的函数
2007/07/16 PHP
PHP 日,周,月点击排行统计
2012/01/11 PHP
php后门URL的防范
2013/11/12 PHP
php解决和避免form表单重复提交的几种方法
2016/08/31 PHP
PHP进阶学习之依赖注入与Ioc容器详解
2019/06/19 PHP
Laravel 创建可以传递参数 Console服务的例子
2019/10/14 PHP
小议Function.apply() 之一------(函数的劫持与对象的复制)
2006/11/30 Javascript
使用jquery实现div的tab切换实例代码
2013/05/27 Javascript
nodejs批量修改文件编码格式
2015/01/22 NodeJs
jquery实现的3D旋转木马特效代码分享
2015/08/25 Javascript
jQuery和CSS仿京东仿淘宝列表导航菜单
2017/01/04 Javascript
使用NestJS开发Node.js应用的方法
2018/12/03 Javascript
js回调函数原理与用法案例分析
2020/03/04 Javascript
JSON获取属性值方法代码实例
2020/06/30 Javascript
Python中optionParser模块的使用方法实例教程
2014/08/29 Python
Python中尝试多线程编程的一个简明例子
2015/04/07 Python
Scrapy-redis爬虫分布式爬取的分析和实现
2017/02/07 Python
Python进阶-函数默认参数(详解)
2017/05/18 Python
python requests 使用快速入门
2017/08/31 Python
基于python中pygame模块的Linux下安装过程(详解)
2017/11/09 Python
对numpy中轴与维度的理解
2018/04/18 Python
python opencv 简单阈值算法的实现
2019/08/04 Python
python实现文字版扫雷
2020/04/24 Python
Python实现进度条和时间预估的示例代码
2020/06/02 Python
matplotlib绘制鼠标的十字光标的实现(内置方式)
2021/01/06 Python
css3动画效果抖动解决方法
2018/09/03 HTML / CSS
屈臣氏乌克兰:Watsons UA
2019/10/29 全球购物
PHP数据运算类型都有哪些
2013/11/05 面试题
优秀演讲稿范文
2013/12/29 职场文书
青年文明号创建承诺
2014/03/31 职场文书
工商局所长四风自我剖析及整改措施
2014/10/26 职场文书
优秀班主任主要事迹材料
2014/12/16 职场文书
敬业奉献模范事迹材料
2014/12/24 职场文书
云台山导游词
2015/02/03 职场文书
vue如何清除浏览器历史栈
2022/05/25 Vue.js