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 ui1.7 dialog只能弹出一次问题
Aug 27 Javascript
Jquery优化效率 提升性能解决方案
Sep 06 Javascript
jQuery实现hover合成事件的方法
Aug 06 Javascript
在JavaScript中如何解决用execCommand(
Oct 19 Javascript
javascript中的altKey 和 Event属性大全
Nov 06 Javascript
Bootstrap基本插件学习笔记之轮播幻灯片(23)
Dec 08 Javascript
Bootstrap源码解读导航条(7)
Dec 23 Javascript
微信小程序 PHP后端form表单提交实例详解
Jan 12 Javascript
Bootstrap.css与layDate日期选择样式起冲突的解决办法
Apr 07 Javascript
最通俗易懂的javascript变量提升详解
Aug 05 Javascript
JavaScript中使用Async实现异步控制
Aug 15 Javascript
vue动态注册组件实例代码详解
May 30 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
PHPShop存在多个安全漏洞
2006/10/09 PHP
php实现用户在线时间统计详解
2011/10/08 PHP
PHP查询网站的PR值
2013/10/30 PHP
php比较相似字符串的方法
2015/06/05 PHP
Symfony2学习笔记之系统路由详解
2016/03/17 PHP
php封装的表单验证类完整实例
2016/10/19 PHP
使用YII2框架实现微信公众号中表单提交功能
2017/09/04 PHP
[推荐]javascript 面向对象技术基础教程
2009/03/03 Javascript
js跟随滚动条滚动浮动代码
2009/12/31 Javascript
js创建对象的几种常用方式小结(推荐)
2010/10/24 Javascript
JS控制文本框textarea输入字数限制的方法
2013/06/17 Javascript
AngularJS模块管理问题的非常规处理方法
2015/04/29 Javascript
JS模态窗口返回值兼容问题的完美解决方法
2016/05/28 Javascript
js实现拖拽功能
2017/03/01 Javascript
详解vue.js全局组件和局部组件
2017/04/10 Javascript
Bootstrap模态对话框中显示动态内容的方法
2018/08/10 Javascript
详解Vue+axios+Node+express实现文件上传(用户头像上传)
2018/08/10 Javascript
javascript合并两个数组最简单的实现方法
2019/09/14 Javascript
layer弹出框确定前验证:弹出消息框的方法(弹出两个layer)
2019/09/21 Javascript
vue实现标签云效果的示例
2020/11/09 Javascript
Python SQLite3数据库操作类分享
2014/06/10 Python
Python使用shelve模块实现简单数据存储的方法
2015/05/20 Python
Python标准库shutil用法实例详解
2018/08/13 Python
pandas 中对特征进行硬编码和onehot编码的实现
2019/12/20 Python
python爬虫快速响应服务器的做法
2020/11/24 Python
详解pandas赋值失败问题解决
2020/11/29 Python
python复合条件下的字典排序
2020/12/18 Python
荷兰领先的百货商店:De Bijenkorf
2018/10/17 全球购物
车间核算员岗位职责
2014/07/01 职场文书
2015年中学元旦晚会活动方案
2014/12/09 职场文书
教学质量月活动总结
2015/05/11 职场文书
公共场所卫生管理制度
2015/08/05 职场文书
预防职务犯罪警示教育心得体会
2016/01/15 职场文书
为Java项目添加Redis缓存的方法
2021/05/18 Redis
电频谱管理的原则是什么
2022/02/18 无线电
十大最强妖精系宝可梦,哲尔尼亚斯实力最强,第五被称为大力士
2022/03/18 日漫