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 相关文章推荐
jquery 淡入淡出效果的简单实现
Feb 07 Javascript
JavaScript中的prototype和constructor简明总结
Apr 05 Javascript
javascript实现淘宝幻灯片广告展示效果
Apr 27 Javascript
JavaScript实现页面跳转的方式汇总
May 16 Javascript
Node.js的npm包管理器基础使用教程
May 26 Javascript
Bootstrap和Java分页实例第二篇
Dec 23 Javascript
Vue2.0 组件传值通讯的示例代码
Aug 01 Javascript
JavaScript创建对象的七种方式全面总结
Aug 21 Javascript
JQ图片文件上传之前预览功能的简单实例(分享)
Nov 12 Javascript
vue初尝试--项目结构(推荐)
Jan 30 Javascript
express express-session的使用小结
Dec 12 Javascript
node实现socket链接与GPRS进行通信的方法
May 20 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
经典的PHPer为什么被认为是草根?
2007/04/02 PHP
深入PHP异步执行的详解
2013/06/03 PHP
php判断文件上传类型及过滤不安全数据的方法
2014/12/17 PHP
PHP 匿名函数与注意事项详细介绍
2016/11/26 PHP
Laravel框架实现定时发布任务的方法
2018/08/16 PHP
JavaScript 小型打飞机游戏实现原理说明
2010/10/28 Javascript
JavaScript 学习笔记之一jQuery写法图片等比缩放以及预加载
2012/06/28 Javascript
jquery自动切换tabs选项卡的具体实现
2013/12/24 Javascript
JavaScript 实现完美兼容多浏览器的复制功能代码
2015/04/28 Javascript
JS+CSS实现带有碰撞缓冲效果的竖向导航条代码
2015/09/15 Javascript
jQuery网页右侧广告跟随滚动代码分享
2020/04/20 Javascript
Angularjs 创建可复用组件实例代码
2016/10/09 Javascript
基于NodeJS+MongoDB+AngularJS+Bootstrap开发书店案例分析
2017/01/12 NodeJs
纯js实现的积木(div层)拖动功能示例
2017/07/19 Javascript
JS继承与闭包及JS实现继承的三种方式
2017/10/15 Javascript
node实现分片下载的示例代码
2018/10/17 Javascript
vscode配置vue下的es6规范自动格式化详解
2019/03/20 Javascript
js实现九宫格抽奖
2020/03/19 Javascript
Vue优化:常见会导致内存泄漏问题及优化详解
2020/08/04 Javascript
ant-design-vue中的select选择器,对输入值的进行筛选操作
2020/10/24 Javascript
[09:23]国际邀请赛采访专栏:iG战队VK,Tongfu战队Cu
2013/08/05 DOTA
[43:18]NB vs Infamous 2019国际邀请赛淘汰赛 败者组 BO3 第一场 8.22
2019/09/05 DOTA
[02:10]DOTA2 TI10勇士令状玩法及不朽Ⅰ展示:焕新世界,如你所期
2020/05/29 DOTA
python使用循环实现批量创建文件夹示例
2014/03/25 Python
使用Python的判断语句模拟三目运算
2015/04/24 Python
python Django编写接口并用Jmeter测试的方法
2019/07/31 Python
重写django的model下的objects模型管理器方式
2020/05/15 Python
什么是Python中的顺序表
2020/06/02 Python
MaBelle玛贝尔香港官网:香港钻饰连锁店
2019/09/09 全球购物
中学生团员自我评价分享
2013/12/07 职场文书
学年自我鉴定
2014/01/16 职场文书
党员个人剖析材料2014
2014/10/08 职场文书
有限责任公司股东合作协议书
2014/12/02 职场文书
义诊活动总结
2015/02/04 职场文书
挂职个人工作总结
2015/03/05 职场文书
使用Redis实现实时排行榜功能
2021/07/02 Redis