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 相关文章推荐
去除链接虚线全面分析总结
Aug 15 Javascript
javascript 对象的定义方法
Jan 10 Javascript
Jquery中扩展方法extend使用技巧
Aug 24 Javascript
AngularJS初始化过程分析(引导程序)
Dec 06 Javascript
简单谈谈javascript Date类型
Sep 06 Javascript
HTML5 JS压缩图片并获取图片BASE64编码上传
Nov 16 Javascript
jQuery实现滚动效果
Nov 17 jQuery
vue watch自动检测数据变化实时渲染的方法
Jan 16 Javascript
JavaScript 中的12种循环遍历方法【总结】
May 31 Javascript
vue2.0页面前进刷新回退不刷新的实现方法
Jul 31 Javascript
layer.prompt使文本框为空的情况下也能点击确定的方法
Sep 24 Javascript
Javascript文本框脚本实现方法解析
Oct 30 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 iconv() : Detected an illegal character in input string
2010/12/05 PHP
不一样的文字闪烁 轮番闪烁
2009/11/11 Javascript
UpdatePanel和Jquery冲突的解决方法
2013/04/01 Javascript
js实现的复制兼容chrome和IE
2014/04/03 Javascript
使用js Math.random()函数生成n到m间的随机数字
2014/10/09 Javascript
基于JavaScript代码实现pc与手机之间的跳转
2015/12/23 Javascript
浅析JavaScript回调函数应用
2016/05/22 Javascript
Javascript打印局部页面实例
2016/06/21 Javascript
微信小程序技巧之show内容展示,上传文件编码问题
2017/01/23 Javascript
Angularjs单选改为多选的开发过程及问题解析
2017/02/17 Javascript
Angular通过指令动态添加组件问题
2018/07/09 Javascript
微信小程序实现循环动画效果
2018/07/16 Javascript
微信小程序批量监听输入框对按钮样式进行控制的实现代码
2019/10/12 Javascript
js实现时分秒倒计时
2019/12/03 Javascript
Vue点击切换Class变化,实现Active当前样式操作
2020/07/17 Javascript
解决vue-router路由拦截造成死循环问题
2020/08/05 Javascript
在Vue 中获取下拉框的文本及选项值操作
2020/08/13 Javascript
elementui实现预览图片组件二次封装
2020/12/29 Javascript
python通过字典dict判断指定键值是否存在的方法
2015/03/21 Python
Python发送email的3种方法
2015/04/28 Python
使用Python中的tkinter模块作图的方法
2017/02/07 Python
python 设置文件编码格式的实现方法
2017/12/21 Python
Python爬虫天气预报实例详解(小白入门)
2018/01/24 Python
Python button选取本地图片并显示的实例
2019/06/13 Python
Python semaphore evevt生产者消费者模型原理解析
2020/03/18 Python
PyCharm设置注释字体颜色以及是否倾斜的操作
2020/09/16 Python
python函数超时自动退出的实操方法
2020/12/28 Python
机电专业毕业生推荐信
2013/11/10 职场文书
木工主管岗位职责
2013/12/08 职场文书
汽车专业人才自我鉴定范文
2013/12/29 职场文书
如何撰写一封出色的求职信
2014/04/27 职场文书
个人担保书范文
2014/05/20 职场文书
经营目标管理责任书
2014/07/25 职场文书
普通话演讲稿
2014/09/03 职场文书
司法局群众路线教育实践活动整改措施思想汇报
2014/10/13 职场文书
阿里面试Nacos配置中心交互模型是push还是pull原理解析
2022/07/23 Java/Android