vue中实现滚动加载更多的示例


Posted in Javascript onNovember 08, 2017

在以前的前端刀耕火种时代要实现滚动加载更多想要大家都是很快实现了,在vue会有一点麻烦,最近自己研究了一下,做了一个简单的demo,供大家参考:

<template>
  <div>
    <ul>
      <li v-for="item in articles">
        <h2>{{item.title}}</h2>
        <img :src="item.images" alt="">
      </li>
    </ul>
  </div>
</template>
<script>
  import axios from 'axios';
  export default{
    data(){
      return {
        articles : []
      }
    },
    mounted(){
      // 缓存指针
      let _this = this;
      // 设置一个开关来避免重负请求数据
      let sw = true;
      // 此处使用node做了代理
      axios.get('http://localhost:3000/proxy?url=http://news-at.zhihu.com/api/4/news/latest')
        .then(function(response){
          // console.log(JSON.parse(response.data).stories);
          // 将得到的数据放到vue中的data
          _this.articles = JSON.parse(response.data).stories;
        })
        .catch(function(error){
          console.log(error);
        });

      // 注册scroll事件并监听
      window.addEventListener('scroll',function(){
        // console.log(document.documentElement.clientHeight+'-----------'+window.innerHeight); // 可视区域高度
        // console.log(document.body.scrollTop); // 滚动高度
        // console.log(document.body.offsetHeight); // 文档高度
        // 判断是否滚动到底部
        if(document.body.scrollTop + window.innerHeight >= document.body.offsetHeight) {
          // console.log(sw);
          // 如果开关打开则加载数据
          if(sw==true){
            // 将开关关闭
            sw = false;
            axios.get('http://localhost:3000/proxy?url=http://news.at.zhihu.com/api/4/news/before/20170608')
              .then(function(response){
                console.log(JSON.parse(response.data));
                // 将新获取的数据push到vue中的data,就会反应到视图中了
                JSON.parse(response.data).stories.forEach(function(val,index){
                  _this.articles.push(val);
                  // console.log(val);
                });
                // 数据更新完毕,将开关打开
                sw = true;
              })
              .catch(function(error){
                console.log(error);
              });  
          }
        }
      });
    }
  }
</script>
<style lang="less">
  *{
    margin:0;
    padding:0;
  }
  li{
    list-style:none;
  }
</style>

大致效果如下

vue中实现滚动加载更多的示例

当然目前只是一个demo,还有更好的解决办法大家自行补充。

以上这篇vue中实现滚动加载更多的示例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
js获取IFRAME当前的URL的方法
Nov 13 Javascript
改变隐藏的input中value值的方法
Mar 19 Javascript
js设置控件的隐藏与显示的两种方法
Aug 21 Javascript
Ajax局部更新导致JS事件重复触发问题的解决方法
Oct 14 Javascript
JavaScript中的分号插入机制详细介绍
Feb 11 Javascript
vue-resource调用promise取数据方式详解
Jul 21 Javascript
web3.js增加eth.getRawTransactionByHash(txhash)方法步骤
Mar 15 Javascript
详解vue中组件参数
Jul 09 Javascript
JS实现点击拉拽轮播图pc端移动端适配
Sep 05 Javascript
vue响应式系统之observe、watcher、dep的源码解析
Apr 09 Javascript
Vue路由对象属性 .meta $route.matched详解
Nov 04 Javascript
Vue 实现分页与输入框关键字筛选功能
Jan 02 Javascript
详解使用webpack打包编写一个vue-toast插件
Nov 08 #Javascript
结合mint-ui移动端下拉加载实践方法总结
Nov 08 #Javascript
详解如何使用webpack在vue项目中写jsx语法
Nov 08 #Javascript
thinkjs 文件上传功能实例代码
Nov 08 #Javascript
基于jQuery的$.getScript方法去加载javaScript文档解析
Nov 08 #jQuery
在React 组件中使用Echarts的示例代码
Nov 08 #Javascript
浅谈mint-ui loadmore组件注意的问题
Nov 08 #Javascript
You might like
php颜色转换函数hex-rgb(将十六进制格式转成十进制格式)
2013/09/23 PHP
C#使用PHP服务端的Web Service通信实例
2014/04/08 PHP
PHP使用header()输出图片缓存实例
2014/12/09 PHP
php实现递归与无限分类的方法
2015/02/16 PHP
PHP实现浏览器中直接输出图片的方法示例
2018/03/14 PHP
php中青蛙跳台阶的问题解决方法
2018/10/14 PHP
PHP面向对象程序设计中的self、static、parent关键字用法分析
2019/08/14 PHP
获取当前网页document.url location.href区别总结
2008/05/10 Javascript
Extjs学习笔记之四 工具栏和菜单
2010/01/07 Javascript
js判断FCKeditor内容是否为空的两种形式
2013/05/14 Javascript
JQ获取动态加载的图片大小的正确方法分享
2013/11/08 Javascript
js中iframe调用父页面的方法
2014/10/30 Javascript
使用window.prompt()实现弹出用户输入的对话框
2015/04/13 Javascript
js实现基于正则表达式的轻量提示插件
2015/08/29 Javascript
利用Query+bootstrap和js两种方式实现日期选择器
2017/01/10 Javascript
jQuery Validate 无法验证 chosen-select元素的解决方法
2017/05/17 jQuery
Angular 4依赖注入学习教程之简介(一)
2017/06/04 Javascript
javascript实现图片轮换动作方法
2020/08/07 Javascript
EXTJS7实现点击拖拉选择文本
2020/12/17 Javascript
[02:33]DOTA2英雄基础教程 司夜刺客
2013/12/04 DOTA
[01:00:25]NB vs Secret 2018国际邀请赛小组赛BO1 B组加赛 8.19
2018/08/21 DOTA
python实现删除文件与目录的方法
2014/11/10 Python
Python中字典和JSON互转操作实例
2015/01/19 Python
Python3.5基础之函数的定义与使用实例详解【参数、作用域、递归、重载等】
2019/04/26 Python
python实现按行分割文件
2019/07/22 Python
对YOLOv3模型调用时候的python接口详解
2019/08/26 Python
pytorch之Resize()函数具体使用详解
2020/02/27 Python
Ray-Ban雷朋美国官网:全球领先的太阳眼镜品牌
2016/07/20 全球购物
丝绸和人造花卉、植物和树木:Nearly Natural
2018/11/28 全球购物
介绍一下Prototype的$()函数,$F()函数,$A()函数都是什么作用?
2014/03/05 面试题
事业单位分类改革实施方案
2014/03/21 职场文书
公务员更新知识培训实施方案
2014/03/31 职场文书
班级学习雷锋活动总结
2014/07/04 职场文书
2014年乡镇团委工作总结
2014/12/18 职场文书
小学生法制教育心得体会
2016/01/14 职场文书
2016班级元旦联欢会开幕词
2016/03/04 职场文书