iscroll.js--滚动加载实例

本文介绍了iscroll.js在滚动加载中的应用,通过html结构、css样式和脚本初始化,展示了一个简单的分页实现过程,旨在帮助学习者理解如何利用iscroll.js实现高效且优雅的滚动加载效果。
摘要由CSDN通过智能技术生成

滚动加载是个好东西,可以解决一次加载过多的尴尬,其实就是变相的分页,总结下这个轮子的用法,挺简单的。

首先是html结构:

<div class=" saleRecord panelList clear" style="position:relative;height:400px;">
                    <div id="wrapper">
	                    <div id="scroller">
		                    <ul id="thelist">
                    @foreach (var item in ViewBag.***)
                    {
                        if (item.IsPay == true)
                        {
                            <li>
                    <div class="panelListItemForALL">
                        <table class="allRecordTable">
                            <tbody>
                                <tr>
                                    <td>***</td>
                                    <td>@item.***</td>
                                </tr>
                                <tr>
                                    <td>***</td>
                                    <td>@item.***</td>
                                </tr>
                                <tr>
                                    <td>***</td>
                                    <td>@item.***</td>
                                </tr>
                            </tbody>
                        </table>
                    </div>
                            </li> 
                        }
                    }
                            </ul>
                            <div id="more">加载更多</div>
	                </div>
                </div>

然后是css样式:

#wrapper {
	position: absolute;
	z-index: 1;
	top: 0;
	bottom: 0;
	left: 0;
	width: 100%;
	overflow: hidden;
}

#scroller {
	position: absolute;
	z-index: 1;
	-webkit-tap-highlight-color: rgba(0,0,0,0);
	width: 100%;
	-webkit-transform: translateZ(0);
	-moz-transform: translateZ(0);
	-ms-transform: translateZ(0);
	-o-transform: translateZ(0);
	transform: translateZ(0);
	-webkit-touch-callout: none;
	-webkit-user-select: none;
	-moz-user-select: none;
	-ms-user-select: none;
	user-select: none;
	-webkit-text-size-adjust: none;
	-moz-text-size-adjust: none;
	-ms-text-size-adjust: none;
	-o-text-size-adjust: none;
	text-size-adjust: none;
}
#more
        {
            text-align:center;
        }
需要的话,给父元素套上position:relative属性

最后是脚本中的初始化和获取数据:

var pagenum = 1, update = true, id=ID;
        var myScroll;
        setTimeout(function(){
            myScroll = new IScroll('#wrapper', { mouseWheel: true, click: true });
            myScroll.on('scrollEnd', function () {
                //console.log(this.y +"|||"+this.maxScrollY);
                //如果滑动到底部,则加载更多数据(距离最底部10px高度)
                if ((this.y - this.maxScrollY) == 0) {
                    getMore();
                }
            });
        },100 );
        
        function getMore() {
            var that = document.getElementById("more");
            pagenum++;
            $.ajax({
                url: '/***/getPage',
                data: {'currentPage':pagenum,'id':id},
                type: 'POST',
                datatype: "json",
                success: function (data) {
                    //alert(data);
                    var list = data.List;
                    if (list.length < 1) {
                        pagenum--; that.innerHTML = "已经没有更多了..."; return;
                    }
                    var ul = document.getElementById("thelist");
                    for (var i = 0; i < list.length; i++) {
                        var str = "<li>";
                        str += "<div class=\"panelListItemForALL\"><table class=\"allRecordTable\"><tbody><tr><td>***</td><td>"+list[i].OrderCode+"</td>";
                        str += "</tr><tr><td>***</td><td>"+list[i].GoodsName+"</td></tr>";
                        str += "<tr><td>***</td><td>"+ data.DatatimeArray[i] +"</td>";
                        str += "</tr></tbody></table></div>";
                        str += "</li>";
                        ul.innerHTML += str;
                        myScroll.refresh();
                    }
                }
            });

        }
把相应的数据填充进去就好,当然控制器里要写一个分页获取数据的方法,通过这里的ajax获取。

简单逼格高~


参数说明 listLoadingMore({id:"",id2:function(){},action:function(){},pageNum:10,getNew:undefined,funcArg:undefined,func:function(){},loadingMustTime:0,loadingDom:function(){},loadedDom:function(){},nullDataFunc:function(){},endFunc:function(){},errorFunc:function(){}}); id:滚动条id,不可以是body; id2:滚动列表的id,通过function自行根据情况返回; action:数据来源的ajax地址,插件会自动加上page和length(分别表示请求页数和当前已有记录数),返回格式统一是[{},{}...],此类jsonArray; ajaxType:ajax提交方式,将更改传递数据的方式,默认post; pageNum:每页加载数量,将会根据这个数量判断是否全部加载完成; getNew:自定义获取数据方法; funcArg:自定义获取数据时传递的参数,类型为函数,返回所需参数; childrenTag:列表子项的标签,默认LI; func:非自定义获取数据时,创建每行数据的方法; loadingMustTime:强制最小加载时间,默认0; loadingDom:加载中动画自定义,返回Dom或者HTML代码; loadedDom:完全加载完成动画自定义,返回Dom或者HTML代码; nullDataFunc:数据列表为空时执行的方法; endFunc:每页数据加载完成时执行的方法; errorFunc:ajax获取数据失败时调用的方法。 回调方法 调用本方法初始化后将会得到一个专属的方法集: Object {getNew:function,isFull:function,isRunning:function,isStop:function,loading:function,show:function}; getNew():忽略判断条件,强制执行加载操作。此时数据传递中,page值可能出错,但length值一定正确,请谨慎判断后在执行该方法; isFull(boolean):修改列表加载完成标志。true为全部加载完成,false则相反; isRunning(boolean):修改列表当前是否正在加载中标志。几乎没有使用的机会; isStop(boolean):设置是否停止加载,设置为true时将会阻止未来的所有加载操作; loading():根据当前滚动条的位置,自动判断是否需要加载新数据; show(boolean,boolean):强制设置加载中和加载完成dom的显示或隐藏,true表示显示,false相对。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值