vue实现ajax滚动下拉加载,同时具有loading效果

<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>vue测试ajax的使用</title>
<meta id="viewport" name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=no" />
<style>
*{ padding:0; margin:0}
.list ul li{padding:10px 5px 10px 10px;overflow:hidden;zoom:1;position:relative;border-bottom:1px solid #e8e8e8;}
.list ul li .img{margin-right:10px;display:block;width:60px;float:left;}
.list ul li img{width:60px;height:60px;border-radius:8px;}
.list ul li p{-webkit-box-flex:1;color:#777;overflow:hidden;padding-right:70px;}.list ul li p em{margin:7px 0;}
.list ul li p a{display:block;height:16px;line-height:16px;overflow:hidden;font-size:15px;}
.list ul li p span{display:block;line-height:16px;height:16px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;font:12px "\5FAE\8F6F\96C5\9ED1";}
.list ul li p u{margin:0 6px;padding:0 6px;border-left:1px solid #d9d9d9;border-right:1px solid #d9d9d9;}
.list ul li .btn {width: 40px;height: 25px;padding-top: 35px;color: #65bb0a;line-height:25px;text-align:center;background: none;position:absolute;right:5px; top:12px}
.list ul li .btn .bg {position: absolute;left: 0;top: 0;display: inline-block;width: 100%;height: 30px;repeat;background-size: 26px auto;}
.get-more,.loading{display:block;padding:15px 0; line-height:16px;text-align:center;font-size:14px;}
.loading{width:75px; margin:0 auto; background:url(imgs/loading.gif) 0 center no-repeat; padding-left:15px; background-size:13px auto}
</style>
</head>

<body>
<div class="list" id="app" v-scroll="getMore">
    <ul>
        <li v-for="item in games">
            <a v-bind:href="item.url" class="img"><img v-bind:src="item.img"></a>
            <p>
                <a v-bind:href="item.url">{{item.title}}</a>
                <em class="lstar4"></em>
                <span>{{item.server}}<u>39.9M</u>v2.1.3</span>
            </p>
            <a v-bind:href="item.url" class="btn"><em class="bg"></em>下载</a>
        </li>
    </ul>
    <div>
        <p class="get-more" v-on:click="getMore()" v-show="switchShow">点击加载更多</p>
        <p class="loading" v-show="!switchShow">加载中...</p>
    </div>
</div>

<script src="js/vue.js"></script>
<script src="http://cdn.bootcss.com/vue-resource/1.0.3/vue-resource.min.js"></script>
<!--<script src="http://211.149.193.19:8090/vue-tutorials/04.OAuth/jquery-zepto/js/zepto.js"></script>-->
<script>
var vm = new Vue({
    el:‘#app‘,
    data: {
        url: ‘http://*******.com/dynamic.php?s=/Afs/ajaxHisTestServerData/cate_id/4/sta/‘,
        nowPage: 0,
        switchShow:false,
        games: []
    },
    methods: {
        moreFn: function (itemIndex) {
            // console.log(this.nowPage)
            this.$http.jsonp(this.url + itemIndex*10).then(function (response) {
                this.games=this.games.concat(response.body);
                this.switchShow=!this.switchShow;
              }, function (response) {
                  console.log(response)
            });

        },
        getMore: function () {
            this.switchShow=!this.switchShow;
            this.nowPage++;
            this.moreFn(this.nowPage);
        },
        init: function () {
            this.moreFn(this.nowPage);
        }
    },
    directives: {// 自定义指令
      scroll: {
        bind: function (el, binding){
          window.addEventListener(‘scroll‘, function () {
            if(document.body.scrollTop + window.innerHeight >= el.clientHeight) {
              var fnc = binding.value;
              fnc();
            }
          })
        }
      }
    }
})
vm.init();
</script>
</body>
</html>

功能介绍:

1.vue进行ajax请求加载;

2.实现滚动,点击加载数据;

3.通过自定义实现loading 效果;

难点:

1.需要官方的vue-resource组件,进行ajax请求,所以需要了解该API;

2.loading,通过v-show进行判断显示不同的loading 效果;

3.自定义指令,也是最难点,所以需要了解基本的自定义指令API;

时间: 2024-12-02 21:00:17

vue实现ajax滚动下拉加载,同时具有loading效果的相关文章

ASP.NET仿新浪微博下拉加载更多数据瀑布流效果

闲来无事,琢磨着写点东西.貌似页面下拉加载数据,瀑布流的效果很火,各个网站都能见到各式各样的展示效果,原理大同小异.于是乎,决定自己写一写这个效果,希望能给比我还菜的菜鸟们一点参考价值. 在开始之前,先把实现的基本原理说一下.当夜幕下拉到底部的时候,js可以判断滚动条的位置,到达底部触发js方法,执行jquery的ajax方法,向后台一般处理程序夜幕ashx文件请求数据源,得到json格式的数据源.然后,遍历json数据源,拼接一个li标签,再填充到页面上去. 首先,我们来做个简单的html页面

vue加jq的下拉加载总结

先贴代码.要想做下拉加载 ,那么就有一个得先判断在什么时候去加载.我做的判断是当底部离页面还有100左右是我就设置加载.所以,我先获取所有的li列表.然后设置body的高度,拿到body高度,在拿到网页滚动过的高度.把列表的高度减去body加滚动过的高度.就是底部离页面的距离高度. 使用vue的钩子函数,不懂得可以先看vue文档.然后在使用监听滚动条的事件.其他一切看代码. 原文地址:https://www.cnblogs.com/dongfangtaling/p/9146228.html

iscroll.js实现上拉刷新,下拉加载更多,应用技巧项目实战

上拉刷新,下拉加载更多...仿原生的效果----iscroll是一款做滚动效果的插件,具体介绍我就不废话,看官方文档,我只写下我项目开发的一些用到的用法: (如果不好使,调试你的css,想必是个很蛋疼的问题,给点提示 :#wrapper,以及#scroller-content要注意) html如下: <div class="viewport"> <div id="wrapper" class="wrapper"> <

JQuery实现无刷新下拉加载图片

      最近做的一个项目需要做页面无刷新下拉加载图片,调研了一番,大多都采用检测滚动条达到底部,然后利用ajax加载下一页数据对页面数据进行添加,根据这一逻辑,自己写了一个,具体代码如下: JQuery写下拉触发ajax事件 $(window).scroll(function () { if($(window).scrollTop()==($(document).height()-$(window).height()))//判断右边滑动条是否滑到最下 { $.ajax({ url:"&quo

MUI实现上拉刷新和下拉加载

  前  言 ha ha 为实现下拉刷新功能,大多H5框架都是通过DIV模拟下拉回弹动画,在低端android手机上,DIV动画经常出现卡顿现象(特别是图文列表的情况): mui通过双webview解决这个DIV的拖动流畅度问题:拖动时,拖动的不是div,而是一个完整的webview(子webview),回弹动画使用原生动画. mui的上拉加载和下拉刷新类似,都属于pullRefresh插件. 上拉刷新 主页面内容比较简单,只需要创建子页面即可: mui.init({ subpages:[{ u

iscroll5 上拉,下拉 加载数据

我这里的思路是上拉时候只是加载第一页的内容,可根据实际情况修改其中的代码.请勿照搬.样式没怎么调,可以加载gif动画.1.没有数据时候,下拉可以加载数据.2.没有数据时候,点击也可以加载数据.3.其余正常. 4.只要页面没有 <div id="pullDown"> <div class="pullDownLabel">正在加载中...</div> </div> 这段代码就不会执行下拉加载数据.//没有上拉时候用到的ht

下拉加载的实现

HTML <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>下拉加载</title> <script src="jquery.js"></script> </head> <body> <div id="container"> 下拉加载<br/

H5页面下拉加载更多(实用版)

近期在做一个H5网站,需要下拉加载更多产品列表的功能.百度搜索了好久,什么说法都有,什么插件都有.   醉了.基本上每一个能直接拿来用的. 最后发现: 1.dropload.js 插件  还可以,但是有个问题,只能单页使用比较方便.带有tab标签的不推荐使用. 2.自己百度了半天总结出来的一套: <script> document.addEventListener('scroll', watchScroll); var itemIndex = 0; var classid = 10; var

vue2.0 结合better-scroll 实现下拉加载

一.建议先了解下better-scroll 的介绍 链接:https://ustbhuangyi.github.io/better-scroll/doc/zh-hans/#better-scroll%20%E6%98%AF%E4%BB%80%E4%B9%88 二.npm 安装 npm install better-scroll --save 三.因为项目里面多个页面会用到上拉加载,所以这里先作为组件来使用,在components新建一个文件夹scroll,然后建立子文件scroll.vue Sc