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的键盘事件修改代码
Feb 24 Javascript
jquery append()方法与html()方法的区别及使用介绍
Aug 01 Javascript
AngularJS模块管理问题的非常规处理方法
Apr 29 Javascript
JavaScript知识点总结(六)之JavaScript判断变量数据类型
May 31 Javascript
vue.js  父向子组件传参的实例代码
Oct 29 Javascript
jQuery阻止事件冒泡实例分析
Jul 03 jQuery
微信{"errcode":48001,"errmsg":"api unauthorized, hints: [ req_id: 1QoCla0699ns81 ]"}
Oct 12 Javascript
浅谈layui 表单元素的选中问题
Oct 25 Javascript
JS实现盒子拖拽效果
Feb 06 Javascript
Selenium执行Javascript脚本参数及返回值过程详解
Apr 01 Javascript
vue实现简单的登录弹出框
Oct 26 Javascript
vuex页面刷新导致数据丢失的解决方案
Dec 10 Vue.js
使用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
让这部DC动画新作刷新你的认知
2020/03/03 欧美动漫
剖析 PHP 中的输出缓冲
2006/12/21 PHP
PHP数据缓存技术
2007/02/14 PHP
PHP+Mysql+Ajax+JS实现省市区三级联动
2014/05/23 PHP
PHP使用Alexa API获取网站的Alexa排名例子
2014/06/12 PHP
php操作XML、读取数据和写入数据的实现代码
2014/08/15 PHP
PHP simplexml_load_string()函数实例讲解
2019/02/03 PHP
用js 让图片在 div或dl里 居中,底部对齐
2008/01/21 Javascript
小型js框架veryide.librar源代码
2009/03/05 Javascript
js分页代码分享
2014/04/28 Javascript
AngularJS基础知识
2014/12/21 Javascript
jQuery中noConflict()用法实例分析
2015/02/08 Javascript
JS动态加载当前时间的方法
2015/02/09 Javascript
js实现宇宙星空背景效果的方法
2015/03/03 Javascript
JavaScript中用toString()方法返回时间为字符串
2015/06/12 Javascript
浅谈Javascript数组(推荐)
2016/05/17 Javascript
使用jquery获取url及url参数的简单实例
2016/06/14 Javascript
js HTML5多图片上传及预览实例解析(不含前端的文件分割)
2016/08/26 Javascript
学习vue.js中class与style绑定
2016/12/03 Javascript
VueJS 集成 Medium Editor的示例代码 (自定义编辑器按钮)
2017/08/24 Javascript
[42:27]DOTA2上海特级锦标赛主赛事日 - 3 败者组第三轮#2Fnatic VS OG第三局
2016/03/05 DOTA
Python实现简单多线程任务队列
2016/02/27 Python
python scipy求解非线性方程的方法(fsolve/root)
2018/11/12 Python
基于Python爬取51cto博客页面信息过程解析
2020/08/25 Python
HTML5 Blob对象的具体使用
2020/05/22 HTML / CSS
Clarisonic美国官网:科莱丽声波洁面仪
2017/10/12 全球购物
Cynthia Rowley官网:全球领先的生活方式品牌
2020/10/27 全球购物
应用电子专业学生的自我评价
2013/10/16 职场文书
霸王洗发水广告词
2014/03/14 职场文书
2014年个人工作总结报告
2014/11/27 职场文书
财务个人年度总结范文
2015/02/26 职场文书
横空出世观后感
2015/06/09 职场文书
签证工作证明模板
2015/06/15 职场文书
医德医风学习心得体会
2016/01/25 职场文书
与Windows10相比Windows11有哪些改进?值不值得升级?
2021/11/21 数码科技
sql时间段切分实现每隔x分钟出一份高速门架车流量
2022/02/28 SQL Server