js上拉加載下拉刷新


寫在前邊:

工作需要,使用ajax在原來的列表下邊使用ajax請求后台數據,拼接在列表最下邊,在github轉了好久,發現了一個bug極多的js刷新插件,嘗試了一個下午,就在快放棄的時候,發現下邊有留言說用mescroll框架比較簡單好用。遂研究許久,做Javaweb嘛,難免碰前端……

mescroll.js快速上手:

前往mescroll官網下載js和css :http://www.mescroll.com/load.html

1. 下載並引用 mescroll.min.css , mescroll.min.js

2. 拷貝以下布局結構 :

<div id="mescroll" class="mescroll"> //id可以改,而"mescroll"的class不能刪
    //列表內容,如:<ul>列表數據</ul> ...
</div>

3.創建mescroll對象 :

復制代碼
var mescroll = new MeScroll("mescroll", { //第一個參數"mescroll"對應上面布局結構div的id
                   //如果您的下拉刷新是重置列表數據,那么down完全可以不用配置,具體用法參考第一個基礎案例
                   //解析: down.callback默認調用mescroll.resetUpScroll(),而resetUpScroll會將page.num=1,再觸發up.callback
                down: {
                    callback: downCallback //下拉刷新的回調,別寫成downCallback(),多了括號就自動執行方法了
                },
                up: {
                    callback: upCallback //上拉加載的回調
                }
});
復制代碼

4. 處理回調 :

復制代碼
     //下拉刷新的回調
        function downCallback() {
            $.ajax({
                url: 'xxxxxx',
                success: function(data) {
                    //聯網成功的回調,隱藏下拉刷新的狀態;
                    mescroll.endSuccess(); //無參
                    //設置數據
                    //setXxxx(data);//自行實現 TODO
                },
                error: function(data) {
                    //聯網失敗的回調,隱藏下拉刷新的狀態
                    mescroll.endErr();
                }
            });
        }
        
        //上拉加載的回調 page = {num:1, size:10}; num:當前頁 默認從1開始, size:每頁數據條數,默認10
        function upCallback(page) {
            $.ajax({
                url: 'xxxxxx?num=' + page.num + "&size=" + page.size, //如何修改page.num從0開始 ?
                success: function(curPageData) {
                    //聯網成功的回調,隱藏下拉刷新和上拉加載的狀態;
                    //mescroll會根據傳的參數,自動判斷列表如果無任何數據,則提示空,顯示empty配置的內容;
                    //列表如果無下一頁數據,則提示無更多數據,(注意noMoreSize的配置)
                    
                    //方法一(推薦): 后台接口有返回列表的總頁數 totalPage
                    //必傳參數(當前頁的數據個數, 總頁數)
                    //mescroll.endByPage(curPageData.length, totalPage);
                            
                    //方法二(推薦): 后台接口有返回列表的總數據量 totalSize
                    //必傳參數(當前頁的數據個數, 總數據量)
                    //mescroll.endBySize(curPageData.length, totalSize);
                            
                    //方法三(推薦): 您有其他方式知道是否有下一頁 hasNext
                    //必傳參數(當前頁的數據個數, 是否有下一頁true/false)
                    //mescroll.endSuccess(curPageData.length, hasNext);
                            
                    //方法四 (不推薦),會存在一個小問題:比如列表共有20條數據,每頁加載10條,共2頁.
                    //如果只根據當前頁的數據個數判斷,則需翻到第三頁才會知道無更多數據
                    //如果傳了hasNext,則翻到第二頁即可顯示無更多數據.
                    //mescroll.endSuccess(curPageData.length);
                    
                    //設置列表數據
                    //setListData(curPageData);//自行實現 TODO
                },
                error: function(e) {
                    //聯網失敗的回調,隱藏下拉刷新和上拉加載的狀態
                    mescroll.endErr();
                }
            });
        }
復制代碼

 

================分割線:以上均來自mescroll官網,也是最基本的==============

下邊開始寫一些在使用這個框架時候用到的方法:

mescroll.endSuccess(date.length,false); //這個方法這樣用可以使上拉加載的圈的層隱藏起來,常用於ajax判斷返回的參數是否為空,為空則關閉加載層
復制代碼
<style type="text/css">
  .mescroll{
                position: fixed;
                top: 44px;
                bottom: 37px;
                height: auto;
            }
  </style>
在head中加入這個來自適應整個要滾動的層的高度,其中top的值可以修改成自己標題欄的高度,這樣就不會出現標題欄下出現一大塊空白
復制代碼
mescroll.resetUpScroll(); //這個方法用於下拉刷新重置了因下拉動作而到底的底部顯示,也因此會多回調一次上拉加載(此方法內部調用),每次下拉刷新回調的地方都有重置一次
htmlLoading: '<p class="upwarp-progress mescroll-rotate"></p><p class="upwarp-tip"></p>', //上拉加載中的布局,p標簽隨意定義,前邊的是個會轉的圈,這兩行在up中
htmlNodata: '<p class="upwarp-nodata"></p>', //無數據的布局,其中p標簽中可以寫自己想要的文字
noMoreSize: 5, //這個是當頁面顯示不足這個數字的時候不顯示到底定義的文字,比如不滿足5條,則不顯示最下方的“--end--”


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM