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 相关文章推荐
Tab页界面,用jQuery及Ajax技术实现
Sep 21 Javascript
javascript表单验证 - Parsley.js使用和配置
Jan 25 Javascript
javascript 获取图片尺寸及放大图片
Sep 04 Javascript
全面理解面向对象的 JavaScript(来自ibm)
Nov 10 Javascript
基于javascript显示当前时间以及倒计时功能
Mar 18 Javascript
用js实现放大镜的效果的简单实例
May 23 Javascript
微信小程序之滚动视图容器的实现方法
Sep 26 Javascript
jQuery除指定区域外点击任何地方隐藏DIV功能
Nov 13 jQuery
关于vue中watch检测到不到对象属性的变化的解决方法
Feb 08 Javascript
总结js函数相关知识点
Feb 27 Javascript
vue将毫秒数转化为正常日期格式的实例
Sep 16 Javascript
小程序分页实践之编写可复用分页组件
Jul 18 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
深入Nginx + PHP 缓存详解
2013/07/11 PHP
smarty模板局部缓存方法使用示例
2014/06/17 PHP
总结PHP如何获取当前主机、域名、网址、路径、端口和参数等
2016/09/09 PHP
ThinkPHP打水印及设置水印位置的方法
2016/10/14 PHP
JavaScript flash复制库类 Zero Clipboard
2011/01/17 Javascript
基于jquery的blockui插件显示弹出层
2011/04/14 Javascript
httpclient模拟登陆具体实现(使用js设置cookie)
2013/12/11 Javascript
jquery设置按钮停顿3秒不可用
2014/03/07 Javascript
javascript如何使用bind指定接收者
2014/05/04 Javascript
javascript实现的元素拖动函数宿主为浏览器
2014/07/21 Javascript
js获取表格的行数和列数的方法
2015/10/23 Javascript
弹出遮罩层后禁止滚动效果【实现代码】
2016/04/29 Javascript
利用Angularjs实现幻灯片效果
2016/09/07 Javascript
ES2015 Symbol 一种绝不重复的值
2016/12/25 Javascript
JavaScript验证知识整理
2017/03/24 Javascript
让微信小程序支持ES6中Promise特性的方法详解
2017/06/13 Javascript
浅谈vuex actions和mutation的异曲同工
2018/12/13 Javascript
jQuery 判断元素是否存在然后按需加载内容的实现代码
2020/01/16 jQuery
35个Python编程小技巧
2014/04/01 Python
Python读取网页内容的方法
2015/07/30 Python
详解Python中contextlib上下文管理模块的用法
2016/06/28 Python
Python中内置的日志模块logging用法详解
2016/07/12 Python
python 动态加载的实现方法
2017/12/22 Python
python截取两个单词之间的内容方法
2018/12/25 Python
Python数据可视化之画图
2019/01/15 Python
TensorFlow获取加载模型中的全部张量名称代码
2020/02/11 Python
Python中无限循环需要什么条件
2020/05/27 Python
Python利用pip安装tar.gz格式的离线资源包
2020/09/14 Python
python Matplotlib基础--如何添加文本和标注
2021/01/26 Python
HTML5 Canvas渐进填充与透明实现图像的Mask效果
2013/07/11 HTML / CSS
html5简介及新增功能介绍
2020/05/18 HTML / CSS
小学开学寄语
2014/01/19 职场文书
应聘医药销售自荐书范文
2014/02/08 职场文书
2014年班级工作总结
2014/11/14 职场文书
2015年党员岗位承诺书
2015/04/27 职场文书
公司规章制度范本
2015/08/03 职场文书