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 相关文章推荐
In Javascript Class, how to call the prototype method.(three method)
Jan 09 Javascript
ExtJS 简介 让你知道extjs是什么
Dec 29 Javascript
jQuery对象与DOM对象之间的转换方法
Apr 15 Javascript
通过length属性判断jquery对象是否存在
Oct 18 Javascript
js实现点击向下展开的下拉菜单效果代码
Sep 01 Javascript
Javascript实现的SHA-256加密算法完整实例
Feb 02 Javascript
JavaScript实现横线提示输入验证码随输入验证码输入消失的方法
Sep 24 Javascript
jQuery实现搜索页面关键字的功能
Feb 16 Javascript
js实现小时钟效果
Mar 25 Javascript
JavaScript实现随机点名程序
Mar 25 Javascript
js点击事件的执行过程实例分析【冒泡与捕获】
Apr 11 Javascript
Vue循环遍历选项赋值到对应控件的实现方法
Jun 22 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获取文件后缀名的三个函数
2012/10/15 PHP
php启用zlib压缩文件的配置方法
2013/06/12 PHP
PHP实现把数字ID转字母ID
2013/08/12 PHP
硬盘浏览程序,保存成网页格式便可使用
2006/12/03 Javascript
js表数据排序 sort table data
2009/02/18 Javascript
JavaScript下利用fso判断文件是否存在的代码
2010/12/11 Javascript
jQueryUI写一个调整分类的拖放效果实现代码
2012/05/10 Javascript
jQuery ui插件的使用方法代码实例
2013/05/08 Javascript
js正则表达式的使用详解
2013/07/09 Javascript
浅谈Javascript 数组与字典
2015/01/29 Javascript
深入理解JavaScript系列(37):设计模式之享元模式详解
2015/03/04 Javascript
jQuery form插件之ajaxForm()和ajaxSubmit()的可选参数项对象
2016/01/23 Javascript
JS基于HTML5的canvas标签实现炫目的色相球动画效果实例
2016/08/24 Javascript
jQuery通过ajax快速批量提交表单数据
2016/10/25 Javascript
详解Vue2中组件间通信的解决全方案
2017/07/28 Javascript
JQuery 又谈ajax局部刷新
2017/11/27 jQuery
Vue 实现树形视图数据功能
2018/05/07 Javascript
Vue无限滑动周选择日期的组件的示例代码
2018/07/18 Javascript
快速解决处理后台返回json数据格式的问题
2018/08/07 Javascript
vue实现与安卓、IOS交互的方法
2018/11/02 Javascript
Vue组件通信入门之Provide和Inject机制
2019/12/29 Javascript
Python实现删除Android工程中的冗余字符串
2015/01/19 Python
python Django框架实现自定义表单提交
2016/03/25 Python
对numpy中布尔型数组的处理方法详解
2018/04/17 Python
在django-xadmin中APScheduler的启动初始化实例
2019/11/15 Python
Prometheus开发中间件Exporter过程详解
2020/11/30 Python
浅谈HTML5 defer和async的区别
2016/06/07 HTML / CSS
HTML5中的Article和Section元素认识及使用
2013/03/22 HTML / CSS
Java里面有没有全局变量?为什么?
2015/02/06 面试题
简短证婚人证婚词
2014/01/09 职场文书
先进事迹报告会主持词
2014/04/02 职场文书
竞选学生会演讲稿
2014/04/25 职场文书
毕业生面试求职信
2014/06/23 职场文书
2016大一新生入学教育心得体会
2016/01/23 职场文书
《比尾巴》教学反思
2016/02/24 职场文书
Vue如何实现组件间通信
2021/05/15 Vue.js