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 相关文章推荐
firefox事件处理之自动查找event的函数(用于onclick=foo())
Aug 05 Javascript
IE6/7 and IE8/9/10(IE7模式)依次隐藏具有absolute或relative的父元素和子元素后再显示父元素
Jul 31 Javascript
javascript中onmouse事件在div中失效问题的解决方法
Jan 09 Javascript
javascript:history.go()和History.back()的区别及应用
Nov 25 Javascript
详解AngularJS如何实现跨域请求
Aug 22 Javascript
JS实现非首屏图片延迟加载的示例
Jan 06 Javascript
微信头像地址失效踩坑记附带解决方案
Sep 23 Javascript
JS实现滑动插件
Jan 15 Javascript
vue随机验证码组件的封装实现
Feb 19 Javascript
使用vue构建多页面应用的示例
Oct 22 Javascript
JavaScript如何操作css
Oct 24 Javascript
关于JavaScript回调函数的深入理解
Jun 27 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
session 的生命周期是多长
2006/10/09 PHP
浅析PHP原理之变量(Variables inside PHP)
2013/08/09 PHP
PHP防止跨域提交表单
2013/11/01 PHP
PHP将XML转数组过程详解
2013/11/13 PHP
PHP中session变量的销毁
2014/02/27 PHP
PHP页面输出时js设置input框的选中值
2016/09/30 PHP
PHP7如何开启Opcode打造强悍性能详解
2018/05/11 PHP
msn上的tab功能Firefox对childNodes处理的一个BUG
2008/01/21 Javascript
javascript 关于# 和 void的区别分析
2009/10/26 Javascript
js 表格隔行颜色
2009/12/02 Javascript
jQuery插件实现表格隔行换色且感应鼠标高亮行变色
2013/09/22 Javascript
js控制容器隐藏出现防止样式变化的两种方法
2014/04/25 Javascript
JS实现文字向下滚动完整实例
2015/02/06 Javascript
JS实现让访问者自助选择网页文字颜色的方法
2015/02/24 Javascript
基于JavaScript实现快速转换文本语言(繁体中文和简体中文)
2016/03/07 Javascript
javascript实现dom元素可拖动
2016/03/21 Javascript
VUE axios上传图片到七牛的实例代码
2017/07/28 Javascript
BootStrap table实现表格行拖拽效果
2018/12/01 Javascript
Javascript和jquery在selenium的使用过程
2019/10/31 jQuery
Python pickle模块用法实例分析
2015/05/27 Python
Python实现多并发访问网站功能示例
2017/06/19 Python
11月编程语言排行榜 Python逆袭C#上升到第4
2017/11/15 Python
Python3中列表list合并的四种方法
2019/04/19 Python
Python爬虫 bilibili视频弹幕提取过程详解
2019/07/31 Python
python SocketServer源码深入解读
2019/09/17 Python
详解Python3定时器任务代码
2019/09/23 Python
浅谈Python访问MySQL的正确姿势
2020/01/07 Python
Python导入模块包原理及相关注意事项
2020/03/25 Python
PyTorch 导数应用的使用教程
2020/08/31 Python
优瑞自动咖啡机官网:Jura
2018/09/29 全球购物
劳动实践课感言
2014/02/01 职场文书
教务处教学工作总结
2015/08/10 职场文书
Python中使用Lambda函数的5种用法
2021/04/01 Python
redis限流的实际应用
2021/04/24 Redis
Vscode中SSH插件如何远程连接Linux
2022/05/02 Servers
Python绘制散点图之可视化神器pyecharts
2022/07/07 Python