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 相关文章推荐
ExtJS 设置级联菜单的默认值
Jun 13 Javascript
8个超棒的学习 jQuery 的网站 推荐收藏
Apr 02 Javascript
javascript中普通函数的使用介绍
Dec 19 Javascript
jQuery控制的不同方向的滑动(向左、向右滑动等)
Jul 18 Javascript
仿百度联盟对联广告实现代码
Aug 30 Javascript
jQuery Ajax传值到Servlet出现乱码问题的解决方法
Oct 09 Javascript
Bootstrap按钮组简单实现代码
Mar 06 Javascript
移动端Ionic App 资讯上下循环滚动的实现代码(跑马灯效果)
Aug 29 Javascript
不到200行 JavaScript 代码实现富文本编辑器的方法
Jan 03 Javascript
vue.js 添加 fastclick的支持方法
Aug 28 Javascript
jQuery实现基本淡入淡出效果的方法详解
Sep 05 jQuery
Vue 使用Props属性实现父子组件的动态传值详解
Nov 13 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 读取文件乱码问题
2010/02/20 PHP
php获取文件名后缀常用方法小结
2015/02/24 PHP
jquery 图片预加载 自动等比例缩放插件
2008/12/25 Javascript
javascript通过class来获取元素实现代码
2013/02/20 Javascript
JQuery调webservice实现邮箱验证(检测是否可用)
2013/05/21 Javascript
jQuery简单实现日历的方法
2015/05/04 Javascript
浅谈javascript中replace()方法
2015/11/10 Javascript
使用Object.defineProperty实现简单的js双向绑定
2016/04/15 Javascript
微信端开发--登录小程序步骤
2017/01/11 Javascript
Vuejs 用$emit与$on来进行兄弟组件之间的数据传输通信
2017/02/23 Javascript
JS判断非空至少输入两个字符的简单实现方法
2017/06/23 Javascript
js实现微信/QQ直接跳转到支付宝APP打开口令领红包功能
2018/01/09 Javascript
基于Node.js的大文件分片上传示例
2019/06/19 Javascript
vue实现设置载入动画和初始化页面动画效果
2019/10/28 Javascript
[01:14]DOTA2 7.22版本新增神杖效果展示(智力英雄篇)
2019/05/29 DOTA
python模块restful使用方法实例
2013/12/10 Python
在Python程序中进行文件读取和写入操作的教程
2015/04/28 Python
python中字典(Dictionary)用法实例详解
2015/05/30 Python
Python生成数字图片代码分享
2017/10/31 Python
windows下Virtualenvwrapper安装教程
2017/12/13 Python
Python3实现带附件的定时发送邮件功能
2020/12/22 Python
python如何让类支持比较运算
2018/03/20 Python
pygame实现俄罗斯方块游戏(对战篇1)
2019/10/29 Python
Flask和pyecharts实现动态数据可视化
2020/02/26 Python
Python3.7 读取音频根据文件名生成脚本的代码
2020/04/07 Python
Python3通过chmod修改目录或文件权限的方法示例
2020/06/08 Python
通过代码实例解析Pytest运行流程
2020/08/20 Python
python用700行代码实现http客户端
2021/01/14 Python
python中zip()函数遍历多个列表方法
2021/02/18 Python
阿迪达斯印度官方商城:adidas India
2017/03/26 全球购物
世界上最大的艺术和工艺用品商店:MisterArt.com
2018/07/13 全球购物
adidas爱尔兰官方网站:阿迪达斯运动鞋和运动服
2019/11/01 全球购物
家长对学生的评语
2014/04/18 职场文书
感谢信模板大全
2015/01/23 职场文书
部门2015年度工作总结
2015/04/29 职场文书
幼儿园班级工作总结2015
2015/05/25 职场文书