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 相关文章推荐
关于JavaScript中原型继承中的一点思考
Jul 25 Javascript
使用纯javascript实现经典扫雷游戏
Apr 23 Javascript
JS动画效果打开、关闭层的实现方法
May 09 Javascript
D3.js实现直方图的方法详解
Sep 25 Javascript
Vue.js实战之组件之间的数据传递
Apr 01 Javascript
Vue如何实现组件的源码解析
Jun 08 Javascript
vue 解决addRoutes动态添加路由后刷新失效问题
Jul 02 Javascript
详解性能更优越的小程序图片懒加载方式
Jul 18 Javascript
初探Vue3.0 中的一大亮点Proxy的使用
Dec 06 Javascript
送你43道JS面试题(收藏)
Jun 17 Javascript
SSM+layUI 根据登录信息显示不同的页面方法
Sep 20 Javascript
javascript设计模式 ? 装饰模式原理与应用实例分析
Apr 14 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性能的编码技巧以及性能优化详细解析
2013/08/24 PHP
destoon安全设置中需要设置可写权限的目录及文件
2014/06/21 PHP
Laravel 5框架学习之Eloquent (laravel 的ORM)
2015/04/08 PHP
php7连接MySQL实现简易查询程序的方法
2020/10/13 PHP
jQuery使用手册之一
2007/03/24 Javascript
js 键盘记录实现(兼容FireFox和IE)
2010/02/07 Javascript
niceTitle 基于jquery的超链接提示插件
2010/05/31 Javascript
js 验证密码强弱的小例子
2013/03/21 Javascript
JQuery中DOM加载与事件执行实例分析
2015/06/13 Javascript
javascript函数自动执行常用方法汇总
2016/03/28 Javascript
JavaScript中文件上传API详解
2016/04/01 Javascript
快速获取/设置iframe内对象元素的几种js实现方法
2016/05/20 Javascript
AngularJS 所有版本下载地址
2016/09/14 Javascript
Vue 2.0 服务端渲染入门介绍
2017/03/29 Javascript
php register_shutdown_function函数详解
2017/07/23 Javascript
Angular使用 ng-img-max 调整浏览器中的图片的示例代码
2017/08/17 Javascript
Vue组件之全局组件与局部组件的使用详解
2017/10/09 Javascript
ReactNative实现Toast的示例
2017/12/31 Javascript
详解jQuery中的getAll()和cleanData()
2019/04/15 jQuery
vue-cli的build的文件夹下没有dev-server.js文件配置mock数据的方法
2019/04/17 Javascript
js canvas实现俄罗斯方块
2020/10/11 Javascript
vue实现广告栏上下滚动效果
2020/11/26 Vue.js
解决vue下载后台传过来的乱码流的问题
2020/12/05 Vue.js
[03:18]DOTA2亚洲邀请赛小组赛第一日 RECAP赛事回顾
2015/01/30 DOTA
Python 实现王者荣耀中的敏感词过滤示例
2019/01/21 Python
python redis连接 有序集合去重的代码
2019/08/04 Python
Python aiohttp百万并发极限测试实例分析
2019/10/26 Python
pandas中的ExcelWriter和ExcelFile的实现方法
2020/04/24 Python
台湾菁英交友:结识黄金单身的台湾人
2018/01/22 全球购物
Sneaker Studio捷克:购买运动鞋
2018/07/08 全球购物
伊莱克斯(Electrolux)俄罗斯网上商店:瑞典家用电器品牌
2021/01/23 全球购物
医院党的群众路线教育实践活动领导班子对照检查材料
2014/09/25 职场文书
寝室长工作失责检讨书
2014/10/06 职场文书
检讨书范文300字
2015/01/28 职场文书
详解vue身份认证管理和租户管理
2021/05/25 Vue.js
雄兵连:第三季先行图公开,天使恶魔联合,银河之力的新力量
2021/06/11 国漫