mui上拉加載更多下拉刷新數(shù)據(jù)的封裝過程
輾轉(zhuǎn)用mui做了兩個項目,空下來把mui上拉加載更多,下拉刷新數(shù)據(jù)做了一個簡單的封裝,希望可以幫助到需要的朋友
demo項目的結(jié)構(gòu)

直接貼代碼了
index.html
mui上拉刷新下拉加載都這里了,兩個方法搞定
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no" />
<title>mui上拉刷新下拉加載demo--封裝</title>
<script src="js/mui.min.js"></script>
<link href="css/mui.min.css" rel="external nofollow" rel="stylesheet"/>
<style type="text/css">
li{
height: 30px;
line-height: 30px;
font-size: 14px;
color: #bbb;
text-indent: 4%;
border-bottom: 1px solid currentColor;
}
</style>
</head>
<body>
<!--下拉刷新容器-->
<div id="refreshContainer" class="mui-content mui-scroll-wrapper">
<div class="mui-scroll">
<!--數(shù)據(jù)列表-->
<ul class="mui-table-view mui-table-view-chevron" id="list">
</ul>
</div>
</div>
</body>
<script type="text/javascript" charset="utf-8">
var pager = {};//分頁
var totalPage;//總頁碼
pullRefresh(pager);//啟用上拉下拉
function pullRefresh(){
mui("#refreshContainer").pullRefresh({
up:{
contentrefresh : "正在加載...",//可選,正在加載狀態(tài)時,上拉加載控件上顯示的標(biāo)題內(nèi)容
contentnomore:'沒 有 更 多 數(shù) 據(jù) 了',//可選,請求完畢若沒有更多數(shù)據(jù)時顯示的提醒內(nèi)容;
callback:function(){//必選,刷新函數(shù),根據(jù)具體業(yè)務(wù)來編寫,比如通過ajax從服務(wù)器獲取新數(shù)據(jù);
window.setTimeout(function(){
getData(pager);
},500);
}
},
down : {
height:50,//可選,默認50.觸發(fā)下拉刷新拖動距離,
auto: true,//可選,默認false.首次加載自動下拉刷新一次
contentdown : "下拉可以刷新",//可選,在下拉可刷新狀態(tài)時,下拉刷新控件上顯示的標(biāo)題內(nèi)容
contentover : "釋放立即刷新",//可選,在釋放可刷新狀態(tài)時,下拉刷新控件上顯示的標(biāo)題內(nèi)容
contentrefresh : "正在刷新...",//可選,正在刷新狀態(tài)時,下拉刷新控件上顯示的標(biāo)題內(nèi)容
callback :function(){ //必選,刷新函數(shù),根據(jù)具體業(yè)務(wù)來編寫,比如通過ajax從服務(wù)器獲取新數(shù)據(jù);
window.setTimeout(function(){
pager['size']= 3;//條數(shù)
pager['page'] = 1;//頁碼
//刷新要先清空父節(jié)點里面的子節(jié)點
var f = document.getElementById("list");
var childs = f.childNodes;
for(var i = childs.length - 1; i >= 0; i--) {
f.removeChild(childs[i]);
}
getData(pager);
},500);
}
}
})
}
//這個方法是負責(zé)向接口請求數(shù)據(jù)的,你可以選擇你喜歡的方式,我這里是直接用的mui.ajax
function getData(params){
mui.ajax("/article/getArticlePage",{
data:{
"header":{"os":"wap","app":"xxxx","ver":1.0},
"data":params
},
dataType:'json',
type:'post',
headers:{'Content-Type':'application/json'},
success:function(data){
mui('#refreshContainer').pullRefresh().endPullupToRefresh(true);
//下面這坨都是在拼dom 你可以用jquery 或者是你所熟悉的angular,vue雙向綁定
var returnData = data.data;
var element=document.getElementById("list");
var para;
var node;
for(var i = 0; i<returnData.length;i++){
para = document.createElement("li");
node = document.createTextNode(returnData[i].article_title)
para.appendChild(node);
element.appendChild(para);
}
//這里很重要,這里獲取頁碼 公式:總條數(shù)/每頁顯示條數(shù)
totalPage = data.ext%pager.size!=0?
parseInt(data.ext/pager.size)+1:
data.ext/pager.size;
if(totalPage==pager.page){//總頁碼等于當(dāng)前頁碼,停止上拉下拉
mui('#refreshContainer').pullRefresh().endPullupToRefresh(true);
}else{
pager.page++;
mui('#refreshContainer').pullRefresh().refresh(true);
}
},
error:function(xhr,type,errorThrown){
//異常處理;
console.log(type);
}
})
}
</script>
</html>
代碼就貼完了 就是看起來不是很好看
下面是效果圖,想弄視頻上來的 然后發(fā)現(xiàn)太雞肋了 弄不上來 氣死我了



PS:下面給大家分享一段示例代碼:MUI 做上拉下拉加載更多數(shù)據(jù)小記
html代碼
<div id="pullrefresh" class="mui-content mui-scroll-wrapper">
<div id="mui-scroll" class="mui-scroll">
<ul id="refresh-ul" class="mui-table-view">
<!-- 內(nèi)容 -->
</ul>
</div>
</div>
<script type="text/javascript">
mui('body').on('tap','a',function(){document.location.href=this.href;});//監(jiān)聽讓頁面A標(biāo)簽的超鏈接 是有效狀態(tài)
mui.init({
pullRefresh : {
container:"#pullrefresh",//下拉刷新容器標(biāo)識,querySelector能定位的css選擇器均可,比如:id、.class等
up : {
height:50,//可選,默認50.觸發(fā)下拉刷新拖動距離,
auto: true,//可選,默認false.自動下拉刷新一次
contentdown : "下拉可以刷新",//可選,在下拉可刷新狀態(tài)時,下拉刷新控件上顯示的標(biāo)題內(nèi)容
contentover : "釋放立即刷新",//可選,在釋放可刷新狀態(tài)時,下拉刷新控件上顯示的標(biāo)題內(nèi)容
contentrefresh : "正在刷新...",//可選,正在刷新狀態(tài)時,下拉刷新控件上顯示的標(biāo)題內(nèi)容
callback :function(){
//業(yè)務(wù)邏輯代碼,比如通過ajax從服務(wù)器獲取新數(shù)據(jù);
//注意,加載完新數(shù)據(jù)后,必須執(zhí)行如下代碼,注意:若為ajax請求,則需將如下代碼放置在處理完ajax響應(yīng)數(shù)據(jù)之后
//mui('#refresh-ul').pullRefresh().endPullupToRefresh(); //refresh completed
var pagecount=$("#pagecount").val();
var page=$("#page").val();
pagecount=parseInt(pagecount);
page=parseInt(page);
page+=1;
$.ajax({
url:"/mobile/seckill/order/order_refresh_ajax.jhtml",
type: 'post',
datatype:'html',
data: {'pagecount': pagecount,'page':page},
async: false,//false代表只有在等待ajax執(zhí)行完畢后才執(zhí)行
success: function(data,msg){
$("#refresh-ul").append(data);
$("#page").val(page);
},
error: function(data,msg){
alert("error");
}
});
this.endPullupToRefresh(false);
} //必選,刷新函數(shù),根據(jù)具體業(yè)務(wù)來編寫,比如通過ajax從服務(wù)器獲取新數(shù)據(jù);
}
}
});
if(mui.os.plus) {
mui.plusReady(function() {
setTimeout(function() { mui('#pullrefresh').pullRefresh().pullupLoading(); }, 1000);
});
} else {
mui.ready(function() {
mui('#pullrefresh').pullRefresh().pullupLoading();
});
}
function goShoppingCart() {
window.location.href = "/mobile/seckill/shoppingcart.jhtml";
}
</script>
總結(jié)
以上所述是小編給大家介紹的mui上拉加載更多下拉刷新數(shù)據(jù)的封裝過程,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復(fù)大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!
相關(guān)文章
數(shù)據(jù)結(jié)構(gòu)中的各種排序方法小結(jié)(JS實現(xiàn))
下面小編就為大家?guī)硪黄獢?shù)據(jù)結(jié)構(gòu)中的各種排序方法小結(jié)(JS實現(xiàn))。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2016-07-07
深入理解JavaScript系列(10) JavaScript核心(晉級高手必讀篇)
本篇是ECMA-262-3 in detail系列的一個概述(本人后續(xù)會翻譯整理這些文章到本系列(第11-19章)。每個章節(jié)都有一個更詳細的內(nèi)容鏈接,你可以繼續(xù)讀一下每個章節(jié)對應(yīng)的詳細內(nèi)容鏈接進行更深入的了解2012-01-01
詳解JavaScript對數(shù)組操作(添加/刪除/截取/排序/倒序)
這篇文章主要介紹了JavaScript對數(shù)組操作,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-04-04

