mescroll上拉刷新插件的应用实例

文章目录

##插件链接http://www.mescroll.com/api.html?v=66

 //创建MeScroll对象
        var mescroll = new MeScroll("mescroll", {

            up: {
                page:{
                  num:0,//当前页
                  size:10//每页数据条数
                },
                auto: true, //是否在初始化时以上拉加载的方式自动加载第一页数据; 默认false
                isBounce: false, //此处禁止ios回弹,解析(务必认真阅读,特别是最后一点): http://www.mescroll.com/qa.html#q10
                callback: upCallback, //上拉回调,此处可简写; 相当于 callback: function (page) { upCallback(page); }
                toTop:{ //配置回到顶部按钮
                    src : "${ctx}/image/mobile/groupbuy/mescroll-totop.png", //默认滚动到1000px显示,可配置offset修改
                    //offset : 1000
                }
            }
        });



        /*上拉加载的回调 page = {num:1, size:10}; num:当前页 从1开始, size:每页数据条数 */
        function upCallback(page){
            curPage=page.num;
            //联网加载数据
            getListDataFromNet(page.num, page.size, function(curPageData){
                //联网成功的回调,隐藏下拉刷新和上拉加载的状态;
                //mescroll会根据传的参数,自动判断列表如果无任何数据,则提示空;列表无下一页数据,则提示无更多数据;
                console.log("page.num="+page.num+", page.size="+page.size+", curPageData.length="+curPageData.length);

                //方法一(推荐): 后台接口有返回列表的总页数 totalPage
                //mescroll.endByPage(curPageData.length, totalPage); //必传参数(当前页的数据个数, 总页数)

                //方法二(推荐): 后台接口有返回列表的总数据量 totalSize
                //mescroll.endBySize(curPageData.length, totalSize); //必传参数(当前页的数据个数, 总数据量)

                //方法三(推荐): 您有其他方式知道是否有下一页 hasNext
                //mescroll.endSuccess(curPageData.length, hasNext); //必传参数(当前页的数据个数, 是否有下一页true/false)

                //方法四 (不推荐),会存在一个小问题:比如列表共有20条数据,每页加载10条,共2页.如果只根据当前页的数据个数判断,则需翻到第三页才会知道无更多数据,如果传了hasNext,则翻到第二页即可显示无更多数据.
                mescroll.endSuccess(curPageData.length);

                //提示:curPageData.length必传的原因:
                // 1.判断是否有下一页的首要依据: 当传的值小于page.size时,则一定会认为无更多数据.
                // 2.比传入的totalPage, totalSize, hasNext具有更高的判断优先级
                // 3.使配置的noMoreSize生效

                //设置列表数据
                setListData(curPageData, true);
            }, function(){
                //联网失败的回调,隐藏下拉刷新和上拉加载的状态;
                mescroll.endErr();
            });
        }

        /*设置列表数据*/
        function setListData(curPageData, isAppend) {
            var listDom=document.getElementById("newsList");
            for (var i = 0; i < curPageData.ordOrders.length; i++) {
                var newObj=curPageData.ordOrders[i];

                var str='';
                str+="<a href='details.html'>\n"+
                    "<div class='group_list_time'>\n"

                 +"   <div class='group_time clearfix' id='pd_time"+((curPage-1)*10+i+1)+"' beginDate='"+newObj.groupbuyBuybegindate+"' endDate='"+newObj.groupbuySellenddate+"'>\n"
                /*+"  <p>团购结束倒计时</p>\n"*/
                +'</div>'
                +'</div>';
                if(newObj.categoryid==null){
                    str+='<img src="${ctx }/image/crowdfunding/suger/suger-middle-67.jpg" alt="">';
                }else{
                    str+='<img src="${ctx }/image/crowdfunding/suger/suger-middle-'+newObj.categoryid+'.jpg" alt="">';
                }
                str+='    <div class="group_txt">'
                +'    <h2>'+newObj.content+'</h2>'
                +'<p>团购品类:  <b>糖类</b></p>'
                +'</div>\n'
                +'</a>';
                var liDom=document.createElement("li");
                liDom.innerHTML=str;

                if (isAppend) {
                    listDom.appendChild(liDom);//加在列表的后面,上拉加载
                } else{
                    listDom.insertBefore(liDom, listDom.firstChild);//加在列表的前面,下拉刷新
                }
            }
        }

        /*联网加载列表数据
         在您的实际项目中,请参考官方写法: http://www.mescroll.com/api.html#tagUpCallback
         请忽略getListDataFromNet的逻辑,这里仅仅是在本地模拟分页数据,本地演示用
         实际项目以您服务器接口返回的数据为准,无需本地处理分页.
         * */
        var downIndex=0;
        function getListDataFromNet(pageNum,pageSize,successCallback,errorCallback) {
            //延时一秒,模拟联网
            setTimeout(function () {
                try{
                    var param = {};
                    param.currentPage = pageNum;
                    param.pageSize = pageSize;
                    $.ajax({
                        url:"${ctx}/api/groupbuy/pageGroupbuyIndex",
                        type:'post',
                        data:param,
                        success:function(result){
                            if(result.code=='success'){
                                successCallback(result.data);
                            }
                        },
                        error:errorCallback
                    })

                }catch(e){
                    //联网失败的回调
                    errorCallback&&errorCallback();
                }
            },100)//100毫秒后再请求,上拉刷新页面时数据未出来时有"加载中。。。"的效果
        }

    });
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在Vue 2中实现上拉刷新,你可以使用一些库或者自己编写代码来实现。下面是一种可能的实现方式: 1. 首先,你需要在Vue项目中安装一个库,例如`better-scroll`。你可以使用npm或者yarn命令进行安装: ```bash npm install better-scroll --save ``` 2. 在需要实现上拉刷新的组件中,引入`better-scroll`库: ```javascript import BScroll from 'better-scroll' ``` 3. 在组件的`mounted`钩子函数中,创建一个`better-scroll`实例并配置上拉刷新的相关选项: ```javascript mounted() { this.scroll = new BScroll(this.$refs.wrapper, { // 配置上拉刷新选项 probeType: 2, // 设置为3时,可以监听到滚动的位置 pullUpLoad: true // 开启上拉刷新 }) // 监听上拉加载事件 this.scroll.on('pullingUp', this.loadMoreData) } ``` 4. 在组件中定义一个`loadMoreData`方法,用于处理上拉刷新时的逻辑: ```javascript methods: { loadMoreData() { // 执行上拉刷新操作,例如发送请求获取更多数据 // 在获取到数据后,可以将数据合并到原有的数据列表中 // 最后调用this.scroll.finishPullUp()告诉better-scroll上拉刷新完成 // 示例代码: axios.get('/api/getMoreData') .then(response => { const newItems = response.data // 将新的数据合并到原有的数据列表中 this.items = this.items.concat(newItems) // 告诉better-scroll上拉刷新完成 this.scroll.finishPullUp() }) .catch(error => { console.error(error) // 上拉刷新失败时,也需要告诉better-scroll刷新完成 this.scroll.finishPullUp() }) } } ``` 5. 在组件的模板中,使用`ref`属性给需要滚动的区域添加一个引用: ```html <template> <div class="wrapper" ref="wrapper"> <!-- 滚动的内容 --> </div> </template> ``` 这样,当用户上拉滚动区域时,`better-scroll`会触发`pullingUp`事件,然后执行`loadMoreData`方法来处理上拉刷新的逻辑。注意,上述代码只是一种可能的实现方式,具体根据你的项目需求进行调整。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值