移动端开发框架mui之上拉刷新、下拉加载数据(选项卡左右移动自动和刷新指定选项卡内容)

news2024/10/5 19:10:52

移动端开发框架mui之上拉刷新、下拉加载数据(加载多选项卡数据)

 

 之前的代码:
 

<!doctype html>
<html>
 
	<head>
		<meta charset="utf-8">
		<title></title>
		<meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no" />
		<link href="css/mui.css" rel="stylesheet" />
		<style>
					html,
					body {
						background-color: #efeff4;
					}
					.mui-bar~.mui-content .mui-fullscreen {
						top: 44px;
						height: auto;
					}
					.mui-pull-top-tips {
						position: absolute;
						top: -20px;
						left: 50%;
						margin-left: -25px;
						width: 40px;
						height: 40px;
						border-radius: 100%;
						z-index: 1000;
					}
					.mui-bar~.mui-pull-top-tips {
						top: 24px;
					}
					.mui-pull-top-wrapper {
						width: 42px;
						height: 42px;
						display: block;
						text-align: center;
						background-color: #efeff4;
						border: 1px solid #ddd;
						border-radius: 25px;
						background-clip: padding-box;
						box-shadow: 0 4px 10px #bbb;
						overflow: hidden;
					}
					.mui-pull-top-tips.mui-transitioning {
						-webkit-transition-duration: 200ms;
						transition-duration: 200ms;
					}
					.mui-pull-top-tips .mui-pull-loading {
						/*-webkit-backface-visibility: hidden;
						-webkit-transition-duration: 400ms;
						transition-duration: 400ms;*/
						
						margin: 0;
					}
					.mui-pull-top-wrapper .mui-icon,
					.mui-pull-top-wrapper .mui-spinner {
						margin-top: 7px;
					}
					.mui-pull-top-wrapper .mui-icon.mui-reverse {
						/*-webkit-transform: rotate(180deg) translateZ(0);*/
					}
					.mui-pull-bottom-tips {
						text-align: center;
						background-color: #efeff4;
						font-size: 15px;
						line-height: 40px;
						color: #777;
						margin-bottom: 100px;/** 显示加载提示信息: 没有更多数据了等等。 */
					}
					.mui-pull-top-canvas {
						overflow: hidden;
						background-color: #fafafa;
						border-radius: 40px;
						box-shadow: 0 4px 10px #bbb;
						width: 40px;
						height: 40px;
						margin: 0 auto;
					}
					.mui-pull-top-canvas canvas {
						width: 40px;
					}
					.mui-slider-indicator.mui-segmented-control {
						background-color: #efeff4;
					}
				</style>
	</head>
 
	<body  style="background-color: #FFFFFF;">
		<!-- 页面导航栏 -->
		<header id="header" class="mui-bar mui-bar-nav">
			<a class="mui-action-back mui-icon mui-icon-left-nav mui-pull-left"></a>
			<h1 class="mui-title">我的评价</h1>
		</header>
		
		<!-- 页面内容 -->
		<div class="mui-content" style="background-color:#fff;" >
			<div id="slider" class="mui-slider mui-fullscreen">
				<!-- 选项卡 -->
				<div style="padding: 10px 10px;z-index: 1000;">
					<div id="segmentedControl" class="mui-segmented-control">
						<a class="mui-control-item mui-active" data-index="0" href="#item0">已评价</a>
						<a class="mui-control-item" data-index="1" href="#item1" >待评价</a>
					</div>
				</div>
				
				<div class="mui-slider-group"> 
					<!-- 已评价 -->
					<div id="item0" class="mui-slider-item mui-control-content">
						<div  class="mui-scroll-wrapper">
							<div class="mui-scroll">
								<ul class="mui-table-view mui-table-view-striped mui-table-view-condensed" id="itemList0">	
								已评价内容
								</ul>					
								<div id="tab-empty0" wdith="100%" style="text-align: center;"><img src="image/icon_empty.png" style="width: 200px;height: 200px;"></div>
							</div>
						</div> 
					</div>
					
					<!-- 待评价 -->
					<div id="item1" class="mui-slider-item mui-control-content">
						<div class="mui-scroll-wrapper">
							<div class="mui-scroll">
							<ul class="mui-table-view mui-table-view-striped mui-table-view-condensed" id="itemList1">
							待评价内容
							</ul>	
							<div  id="tab-empty1" wdith="100%" style="text-align: center;"><img src="image/icon_empty.png" style="width: 200px;height: 200px;"></div>
							</div>
						</div>
					</div>
					
				</div>
			</div>	
		</div>	
		<script src="js/mui.js"></script>
		<script src="js/mui.pullToRefresh.js"></script>
		<script src="js/mui.pullToRefresh.material.js"></script>
		<script src="js/app.js"></script>
		<script type="text/javascript">
			mui.init({
				statusBarBackground: '#f7f7f7',
				swipeBack:false //启用右滑关闭功能
			});
			//阻尼系数
			var deceleration = mui.os.ios?0.003:0.0009;
			mui('.mui-scroll-wrapper').scroll({
				bounce: false,
				indicators: true, //是否显示滚动条
				deceleration:deceleration
			});
			
			//查询参数(分页查询、上拉刷新和下拉加载都是查询后台数据分页功能)
			var loadParams = {
				pageNumber: 1, noMore: false
			};
			
			/**
			 * tabIndex 选项卡索引号  firstLoad 是否首次加载  rateState 评价状态(1已评价 0待评价) noMore 没有更多数据了
			 */
			var loadParams = {
				tabOptions: [
					{ tabIndex: 0 , firstLoad: false , rateState: 1 , pageNumber: 1, noMore: false },
					{ tabIndex: 1 ,  firstLoad: false , rateState: 0 , pageNumber: 1, noMore: false },
				]
			};
			
			
			//初始化下拉刷新、上拉加载控件 
			/**
			 * 下拉刷新具体业务实现
			 */
			function pulldownRefresh(index , selfElement) {
				var loadObject = loadParams.tabOptions[index];
				loadObject.pageNumber = 1;
				loadObject.noMore = false;
				getRateList(loadObject , true , selfElement); 
			}
			/**
			 * 上拉加载具体业务实现
			 */
			function pullupRefresh(index , selfElement) {
				var loadObject = loadParams.tabOptions[index];
				if (loadObject.noMore == false){
					getRateList(loadObject , false , selfElement);
				}else{
					selfElement.endPullUpToRefresh(true);//参数为true代表没有更多数据了。
				}
			}
			
			//循环初始化所有下拉刷新,上拉加载。 .mui-slider-group .mui-scroll
			mui.each(document.querySelectorAll('.mui-scroll-wrapper .mui-scroll'), function(index, pullRefreshEl) {
				mui(pullRefreshEl).pullToRefresh({
					down: {
						callback: function() {
							var selfElement = this;
							setTimeout(function(){ 
								pulldownRefresh(index , selfElement);
								selfElement.endPullDownToRefresh();
								//console.log("下拉刷新: " + index);  
							} , 500);	
						}
					}
					,
					up: {
						callback: function() {
							var selfElement = this;
							setTimeout(function() {	
								//console.log("上拉加载: " + index);
								if (index == 0){
									//self.endPullUpToRefresh(loadOrder0Object.noMore); //参数为true代表没有更多数据了。
									pullupRefresh(index , selfElement);
								}else{
									//self.endPullUpToRefresh(loadOrder1Object.noMore); //参数为true代表没有更多数据了。
									pullupRefresh(index , selfElement);
								}
								//alert("下拉刷新 index : " + index + " , 参数 " + JSON.stringify(loadAlarm0Object));
							}, 500);
						}
					}	
				});
			});	
			
			
			//选项卡切换事件
			/** 
			mui(".mui-segmented-control").on('tap','.mui-control-item',function(){
				var tabObject = this;
				var tabIndex =  parseInt(tabObject.getAttribute("data-index"));
				loadParams.loadTabIndex = tabIndex;
				var loadObject = loadParams.tabOptions[tabIndex];
				console.log("选项卡切换事件, tabIndex = " + tabIndex);
				//新任务
				if (loadObject.firstLoad == false){
					getRateList(loadObject ,  false , this);
					console.log("加载选项卡数据,tabIndex = " + tabIndex);
				}
			});
			*/
							
				
			/** 默认自动刷新数据 */
			setTimeout(function(){
				//刷新两个或多个选项卡数据
				/** */
				mui.each(document.querySelectorAll('.mui-scroll-wrapper .mui-scroll'), function(index, pullRefreshEl) {
					mui(pullRefreshEl).pullToRefresh().pullUpLoading();
				});
				
				
			} , 300);
			
			
			/** 
			 * 查询评价信息 (分页查询)
			 * refreshFlag :  刷新标志(true / false)。如果是刷新则加载第一页数据原来的数据清空;如果是为false 则追加到列表(加载更多)
			 */  
			function getRateList(loadObject , refreshFlag , self){
				var tabIndex = loadObject.tabIndex;
				var postData = {
					rateState: loadObject.rateState,
					pageNumber: loadObject.pageNumber
				}
				ajaxJson(
					'/rate/findAll',
					postData,
					function(resultObject){
 
						//请求成功处理
						if (resultObject.code == 1000){
							//plus.nativeUI.alert(JSON.stringify(resultObject.data), function(){}, "系统提示: 结果", "确定");
							var pagerObject = resultObject.data;
							if (pagerObject.list && pagerObject.list.length > 0){
								//取出分页数据: 数组
								var list = pagerObject.list;
								//根据分页数据,得到本次获取的数据总长度
								var totalCount = list.length;
								//空数据提示内容
								var tabEnpty =  document.getElementById('tab-empty' + tabIndex);
								if (totalCount > 0){
									//有数据时,隐藏空数据提示信息
									tabEnpty.classList.add("mui-hidden");
								}else{
									//没有数据时,显示空数据提示信息
									tabEnpty.classList.remove("mui-hidden"); 
								}
								var htmlContent = '';
								//解析分页数据,每一条数据都是一个对象
								for (var i = 0 ; i < list.length ; i++){
									//获得当前数据对象
									var rateInfo = list[i];
									var id = rateInfo.id;
									var title = rateInfo.title;
									// ...... 这里获取对象属性数据
									// ...... 这里获取对象属性数据
									// ...... 这里获取对象属性数据
									htmlContent += '<li class="mui-table-view-cell">';
									htmlContent += '<div class="mui-table">';
									htmlContent += '<div class="mui-table-cell">';
									htmlContent += '<h5>标题1:' + title + '</h5>';
									htmlContent += '<h5>标题2:' + title + '</h5>';
									htmlContent += '<h5>标题3:' + title + '</h5>';
									htmlContent += '</div>';
									htmlContent += '</div>'; 
									htmlContent += '</li>';
								}
								//页面数据列表对象
								var itemListObject = document.getElementById("itemList" + tabIndex);
								//判断是刷新 还是 加载更多
								if (refreshFlag == true){
									self.refresh(true);//重置控件:解决上拉分页查询所有数据后,下拉刷新显示的数据列表无法上拉操作(提示没有更多数据)
									//下拉刷新数据时,直接将列表内容显示为当前已刷新的内容
									itemListObject.innerHTML = htmlContent;
								}else{
									self.endPullUpToRefresh(loadObject.noMore);//参数为true代表没有更多数据了。
									//上拉加载数据时,将当前数据追加到咧白哦中。
									itemListObject.insertAdjacentHTML("beforeEnd" , htmlContent);
								}
								//处理加载信息: 当当前当页等于总页数
								if (pagerObject.pageNum == pagerObject.pages){ 
									loadObject.noMore = true;
								}else{
									var pageNumber = pagerObject.pageNum;
									loadObject.pageNumber = pageNumber + 1;
								}
								alert("已为您加载 " + totalCount + " 条记录。");
								//plus.nativeUI.toast("已为您加载 " + totalCount + " 条记录。");
							}
						}
						else{
							//plus.nativeUI.alert(resultObject.msg, function(){}, "系统提示", "确定");
							alert(resultObject.msg);
							return;
						}
					},
					function(errorMsg){
						//请求失败处理
						alert(errorMsg);
						//plus.nativeUI.alert(errorMsg, function(){}, "系统提示", "确定");
					},
					""
				);
				
			 }
	
		</script>
	</body>
 
</html>


之前的一篇文章已完成刷新多个选显卡,这篇是在那篇文章的内容进行优化:

需求1:有时候,在多选卡页页面时,做了一些操作需要自动显示及刷新指定的选项卡。所以之前那篇文章的内容是无法满足现在的需求。所以现在需要对之前的代码进行优化:

网上查阅了相关资料,切换到指定选项卡使用下面这种方式:
 

	mui('.mui-slider').slider().gotoItem(tabIndex);

但是通过测试,发现有个问题:当当前选项卡已经为激活状态时,再调用上面的代码,是无法刷新当前选项卡页面数据的。写一个选项卡切换及刷新数据的函数,继续优化一下代码就可以了:

//refreshTab(0);
function refreshTab(tabIndex){
		   
	//已经是当前选项卡,则刷新数据
	var newActiveEl = document.getElementById("mui-control-item" + tabIndex);
	if (newActiveEl.classList.contains("mui-active") == true){
		//只刷新数据
		var selectClassName = ".mui-scroll-wrapper.item" + tabIndex;
		var refreshTabElement = document.querySelector(selectClassName + " .mui-scroll");
		$(refreshTabElement).pullToRefresh().pullDownLoading();		 
	 }else{
		//切换到指定的选项卡
		mui('.mui-slider').slider().gotoItem(tabIndex);
	}
 }


需求2:有时候,需要触发左右移动时,自动切换选项卡及刷新选项卡内容。左右选项卡刷新代码:

//选项卡左右移动事件处理
document.querySelector('.mui-slider').addEventListener('slide', function(event) {
	//注意slideNumber是从0开始的;
	//document.getElementById("info").innerText = "你正在看第"+(event.detail.slideNumber+1)+"张图片";
	// console.log(" 监听选项卡左右事件: 当前选项卡索引为 " +event.detail.slideNumber);
	var index = event.detail.slideNumber;
	var muiActiveEl = document.querySelector(".mui-control-item.mui-active");
	var newActiveEl = document.getElementById("mui-control-item" + index);
	muiActiveEl.classList.remove("mui-active"); 
	newActiveEl.classList.add("mui-active");
    //刷新对应选项卡数据	
    //loadParams.tabOptions.tabIndex = index;
	//pulldownRefresh(index , newActiveEl);
});

最终代码:

<!doctype html>
<html>
 
	<head>
		<meta charset="utf-8">
		<title></title>
		<meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no" />
		<link href="css/mui.css" rel="stylesheet" />
		<style>
					html,
					body {
						background-color: #efeff4;
					}
					.mui-bar~.mui-content .mui-fullscreen {
						top: 44px;
						height: auto;
					}
					.mui-pull-top-tips {
						position: absolute;
						top: -20px;
						left: 50%;
						margin-left: -25px;
						width: 40px;
						height: 40px;
						border-radius: 100%;
						z-index: 1000;
					}
					.mui-bar~.mui-pull-top-tips {
						top: 24px;
					}
					.mui-pull-top-wrapper {
						width: 42px;
						height: 42px;
						display: block;
						text-align: center;
						background-color: #efeff4;
						border: 1px solid #ddd;
						border-radius: 25px;
						background-clip: padding-box;
						box-shadow: 0 4px 10px #bbb;
						overflow: hidden;
					}
					.mui-pull-top-tips.mui-transitioning {
						-webkit-transition-duration: 200ms;
						transition-duration: 200ms;
					}
					.mui-pull-top-tips .mui-pull-loading {
						/*-webkit-backface-visibility: hidden;
						-webkit-transition-duration: 400ms;
						transition-duration: 400ms;*/
						
						margin: 0;
					}
					.mui-pull-top-wrapper .mui-icon,
					.mui-pull-top-wrapper .mui-spinner {
						margin-top: 7px;
					}
					.mui-pull-top-wrapper .mui-icon.mui-reverse {
						/*-webkit-transform: rotate(180deg) translateZ(0);*/
					}
					.mui-pull-bottom-tips {
						text-align: center;
						background-color: #efeff4;
						font-size: 15px;
						line-height: 40px;
						color: #777;
						margin-bottom: 100px;/** 显示加载提示信息: 没有更多数据了等等。 */
					}
					.mui-pull-top-canvas {
						overflow: hidden;
						background-color: #fafafa;
						border-radius: 40px;
						box-shadow: 0 4px 10px #bbb;
						width: 40px;
						height: 40px;
						margin: 0 auto;
					}
					.mui-pull-top-canvas canvas {
						width: 40px;
					}
					.mui-slider-indicator.mui-segmented-control {
						background-color: #efeff4;
					}
				</style>
	</head>
 
	<body  style="background-color: #FFFFFF;">
		<!-- 页面导航栏 -->
		<header id="header" class="mui-bar mui-bar-nav">
			<a class="mui-action-back mui-icon mui-icon-left-nav mui-pull-left"></a>
			<h1 class="mui-title">我的评价</h1>
		</header>
		
		<!-- 页面内容 -->
		<div class="mui-content" style="background-color:#fff;" >
			<div id="slider" class="mui-slider mui-fullscreen">
				<!-- 选项卡 -->
				<div style="padding: 10px 10px;z-index: 1000;">
					<div id="segmentedControl" class="mui-segmented-control">
						<a class="mui-control-item mui-active" data-index="0" href="#item0">已评价</a>
						<a class="mui-control-item" data-index="1" href="#item1" >待评价</a>
					</div>
				</div>
				
				<div class="mui-slider-group"> 
					<!-- 已评价 -->
					<div id="item0" class="mui-slider-item mui-control-content">
						<div  class="mui-scroll-wrapper item0">
							<div class="mui-scroll">
								<ul class="mui-table-view mui-table-view-striped mui-table-view-condensed" id="itemList0">	
								已评价内容
								</ul>					
								<div id="tab-empty0" wdith="100%" style="text-align: center;"><img src="image/icon_empty.png" style="width: 200px;height: 200px;"></div>
							</div>
						</div> 
					</div>
					
					<!-- 待评价 -->
					<div id="item1" class="mui-slider-item mui-control-content">
						<div class="mui-scroll-wrapper item1">
							<div class="mui-scroll">
							<ul class="mui-table-view mui-table-view-striped mui-table-view-condensed" id="itemList1">
							待评价内容
							</ul>	
							<div  id="tab-empty1" wdith="100%" style="text-align: center;"><img src="image/icon_empty.png" style="width: 200px;height: 200px;"></div>
							</div>
						</div>
					</div>
					
				</div>
			</div>	
		</div>	
		<script src="js/mui.js"></script>
		<script src="js/mui.pullToRefresh.js"></script>
		<script src="js/mui.pullToRefresh.material.js"></script>
		<script src="js/app.js"></script>
		<script type="text/javascript">
			mui.init({
				statusBarBackground: '#f7f7f7',
				swipeBack:false //启用右滑关闭功能
			});
			//阻尼系数
			var deceleration = mui.os.ios?0.003:0.0009;
			mui('.mui-scroll-wrapper').scroll({
				bounce: false,
				indicators: true, //是否显示滚动条
				deceleration:deceleration
			});
			
			//查询参数(分页查询、上拉刷新和下拉加载都是查询后台数据分页功能)
			var loadParams = {
				pageNumber: 1, noMore: false
			};
			
			/**
			 * tabIndex 选项卡索引号  firstLoad 是否首次加载  rateState 评价状态(1已评价 0待评价) noMore 没有更多数据了
			 */
			var loadParams = {
				tabOptions: [
					{ tabIndex: 0 , firstLoad: false , rateState: 1 , pageNumber: 1, noMore: false },
					{ tabIndex: 1 ,  firstLoad: false , rateState: 0 , pageNumber: 1, noMore: false },
				]
			};
			
			
			//初始化下拉刷新、上拉加载控件 
			/**
			 * 下拉刷新具体业务实现
			 */
			function pulldownRefresh(index , selfElement) {
				var loadObject = loadParams.tabOptions[index];
				loadObject.pageNumber = 1;
				loadObject.noMore = false;
				getRateList(loadObject , true , selfElement); 
			}
			/**
			 * 上拉加载具体业务实现
			 */
			function pullupRefresh(index , selfElement) {
				var loadObject = loadParams.tabOptions[index];
				if (loadObject.noMore == false){
					getRateList(loadObject , false , selfElement);
				}else{
					selfElement.endPullUpToRefresh(true);//参数为true代表没有更多数据了。
				}
			}
			
			//循环初始化所有下拉刷新,上拉加载。 .mui-slider-group .mui-scroll
			mui.each(document.querySelectorAll('.mui-scroll-wrapper .mui-scroll'), function(index, pullRefreshEl) {
				mui(pullRefreshEl).pullToRefresh({
					down: {
						callback: function() {
							var selfElement = this;
							setTimeout(function(){ 
								pulldownRefresh(index , selfElement);
								selfElement.endPullDownToRefresh();
								//console.log("下拉刷新: " + index);  
							} , 500);	
						}
					}
					,
					up: {
						callback: function() {
							var selfElement = this;
							setTimeout(function() {	
								//console.log("上拉加载: " + index);
								if (index == 0){
									//self.endPullUpToRefresh(loadOrder0Object.noMore); //参数为true代表没有更多数据了。
									pullupRefresh(index , selfElement);
								}else{
									//self.endPullUpToRefresh(loadOrder1Object.noMore); //参数为true代表没有更多数据了。
									pullupRefresh(index , selfElement);
								}
								//alert("下拉刷新 index : " + index + " , 参数 " + JSON.stringify(loadAlarm0Object));
							}, 500);
						}
					}	
				});
			});	
			
			
			//选项卡切换事件
			/** 
			mui(".mui-segmented-control").on('tap','.mui-control-item',function(){
				var tabObject = this;
				var tabIndex =  parseInt(tabObject.getAttribute("data-index"));
				loadParams.loadTabIndex = tabIndex;
				var loadObject = loadParams.tabOptions[tabIndex];
				console.log("选项卡切换事件, tabIndex = " + tabIndex);
				//新任务
				if (loadObject.firstLoad == false){
					getRateList(loadObject ,  false , this);
					console.log("加载选项卡数据,tabIndex = " + tabIndex);
				}
			});
			*/
							

        //选项卡左右移动事件处理
        document.querySelector('.mui-slider').addEventListener('slide', function(event)               {
	//注意slideNumber是从0开始的;
	//document.getElementById("info").innerText = "你正在看第"+(event.detail.slideNumber+1)+"张图片";
	// console.log(" 监听选项卡左右事件: 当前选项卡索引为 " +event.detail.slideNumber);
	var index = event.detail.slideNumber;
	var muiActiveEl = document.querySelector(".mui-control-item.mui-active");
	var newActiveEl = document.getElementById("mui-control-item" + index);
	muiActiveEl.classList.remove("mui-active"); 
	newActiveEl.classList.add("mui-active");
    //刷新对应选项卡数据	
    //loadParams.tabOptions.tabIndex = index;
	//pulldownRefresh(index , newActiveEl);
});


//自动刷新指定选项卡
//refreshTab(0);
function refreshTab(tabIndex){
		   
	//已经是当前选项卡,则刷新数据
	var newActiveEl = document.getElementById("mui-control-item" + tabIndex);
	if (newActiveEl.classList.contains("mui-active") == true){
		//只刷新数据
		var selectClassName = ".mui-scroll-wrapper.item" + tabIndex;
		var refreshTabElement = document.querySelector(selectClassName + " .mui-scroll");
		$(refreshTabElement).pullToRefresh().pullDownLoading();		 
	 }else{
		//切换到指定的选项卡
		mui('.mui-slider').slider().gotoItem(tabIndex);
	}
 }


				
			/** 默认自动刷新数据 */
			setTimeout(function(){
				//刷新两个或多个选项卡数据
				/** */
				mui.each(document.querySelectorAll('.mui-scroll-wrapper .mui-scroll'), function(index, pullRefreshEl) {
					mui(pullRefreshEl).pullToRefresh().pullUpLoading();
				});
				
				
			} , 300);
			
			
			/** 
			 * 查询评价信息 (分页查询)
			 * refreshFlag :  刷新标志(true / false)。如果是刷新则加载第一页数据原来的数据清空;如果是为false 则追加到列表(加载更多)
			 */  
			function getRateList(loadObject , refreshFlag , self){
				var tabIndex = loadObject.tabIndex;
				var postData = {
					rateState: loadObject.rateState,
					pageNumber: loadObject.pageNumber
				}
				ajaxJson(
					'/rate/findAll',
					postData,
					function(resultObject){
 
						//请求成功处理
						if (resultObject.code == 1000){
							//plus.nativeUI.alert(JSON.stringify(resultObject.data), function(){}, "系统提示: 结果", "确定");
							var pagerObject = resultObject.data;
							if (pagerObject.list && pagerObject.list.length > 0){
								//取出分页数据: 数组
								var list = pagerObject.list;
								//根据分页数据,得到本次获取的数据总长度
								var totalCount = list.length;
								//空数据提示内容
								var tabEnpty =  document.getElementById('tab-empty' + tabIndex);
								if (totalCount > 0){
									//有数据时,隐藏空数据提示信息
									tabEnpty.classList.add("mui-hidden");
								}else{
									//没有数据时,显示空数据提示信息
									tabEnpty.classList.remove("mui-hidden"); 
								}
								var htmlContent = '';
								//解析分页数据,每一条数据都是一个对象
								for (var i = 0 ; i < list.length ; i++){
									//获得当前数据对象
									var rateInfo = list[i];
									var id = rateInfo.id;
									var title = rateInfo.title;
									// ...... 这里获取对象属性数据
									// ...... 这里获取对象属性数据
									// ...... 这里获取对象属性数据
									htmlContent += '<li class="mui-table-view-cell">';
									htmlContent += '<div class="mui-table">';
									htmlContent += '<div class="mui-table-cell">';
									htmlContent += '<h5>标题1:' + title + '</h5>';
									htmlContent += '<h5>标题2:' + title + '</h5>';
									htmlContent += '<h5>标题3:' + title + '</h5>';
									htmlContent += '</div>';
									htmlContent += '</div>'; 
									htmlContent += '</li>';
								}
								//页面数据列表对象
								var itemListObject = document.getElementById("itemList" + tabIndex);
								//判断是刷新 还是 加载更多
								if (refreshFlag == true){
									self.refresh(true);//重置控件:解决上拉分页查询所有数据后,下拉刷新显示的数据列表无法上拉操作(提示没有更多数据)
									//下拉刷新数据时,直接将列表内容显示为当前已刷新的内容
									itemListObject.innerHTML = htmlContent;
								}else{
									self.endPullUpToRefresh(loadObject.noMore);//参数为true代表没有更多数据了。
									//上拉加载数据时,将当前数据追加到咧白哦中。
									itemListObject.insertAdjacentHTML("beforeEnd" , htmlContent);
								}
								//处理加载信息: 当当前当页等于总页数
								if (pagerObject.pageNum == pagerObject.pages){ 
									loadObject.noMore = true;
								}else{
									var pageNumber = pagerObject.pageNum;
									loadObject.pageNumber = pageNumber + 1;
								}
								alert("已为您加载 " + totalCount + " 条记录。");
								//plus.nativeUI.toast("已为您加载 " + totalCount + " 条记录。");
							}
						}
						else{
							//plus.nativeUI.alert(resultObject.msg, function(){}, "系统提示", "确定");
							alert(resultObject.msg);
							return;
						}
					},
					function(errorMsg){
						//请求失败处理
						alert(errorMsg);
						//plus.nativeUI.alert(errorMsg, function(){}, "系统提示", "确定");
					},
					""
				);
				
			 }
	
		</script>
	</body>
 
</html>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/757993.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

JVM内存结构—— 程序计数器,虚拟机栈 解析

JVM的内存结构 1. 程序计数器(PC Register )寄存器 1.1 全称:Program Counter Register 1.2 作用 首先,java源代码 被 编译成 二进制的 字节码 (jvm指令) jvm跨平台就是这一套指令,linux 下,windows下指令都是一致的 指令 经过 解释器 把每一条指令 解释成 机器码…

在Vue中如何根据下拉框选中的值 展示不同的输入框

大纲&#xff1a; &#x1f333; 1、怎么根据下拉框中选中的值展示不同的输入框呢&#xff1f; 我们可以使用change事件来进行处理。当我们选中收费类型的其中一个就触发change事件&#xff0c;然后根据选中的value值&#xff0c;对数据进行展示与隐藏 即可。 &#x1f951; …

BIO、NIO、AIO之间有什么区别

一、简介 在计算机中&#xff0c;IO 传输数据有三种工作方式&#xff0c;分别是&#xff1a; BIO、NIO、AIO。 在讲解 BIO、NIO、AIO 之前&#xff0c;我们先来回顾一下这几个概念&#xff1a;同步与异步&#xff0c;阻塞与非阻塞。 同步与异步的区别 同步就是发起一个请求后…

“从草图到魔法:使用ClipDrop - Stable Doodle将你的想象变成真实图像“

ClipDrop - Stable Doodle 是一款将手绘草图转换为真实图像的工具&#xff0c;您可以按照以下步骤使用它&#xff1a; 1、打开https://clipdrop.co/stable-doodle 2、使用鼠标画一幅画 3、输入提示词&#xff0c;比如&#xff1a;mikey mouse 按“generate”按钮 4、结果

春秋云境—Initial

文章目录 春秋云境—Initial一、前期准备1、靶标介绍2、相关设备 二、WEB渗透1、ThinkPHP RCE&#xff08;1&#xff09;、打开网站&#xff08;2&#xff09;、检测漏洞 2、蚁剑连接3、sudo提权4、frpc代理5、fsacn扫描 三、后渗透1、信呼OA RCE&#xff08;1&#xff09;、1.…

Android 14适配

Google I/O 2023 发布的 Android beta2 &#xff0c;Android 14 将在2023年第三季度发布。Google Play 已经开始强制要求targetSdkVersion 33适配&#xff0c;所以 targetSdkVersion 34适配也是非常有必要的。 前台服务类型&#xff08;Foreground service types are required&…

4. 设计(黑盒)测试用例 (一) 等价类 边界值 判定表

本篇文章我们将详细介绍如何来测试用例。 1. 设计测试用例的基本要素 1.1 测试用例概念 测试用例&#xff08;Test Case&#xff09;是为了实施测试而向被测试的系统提供的一组集合。 1.2 测试用例要素 测试环境、测试步骤、测试数据、预期结果。 1.3 测试用例的重要性 提…

架构训练营学习笔记:4-1存储架构模式之数据库存储架构

一 数据库读写分离 适应场景&#xff1a;互联网读多写少。 原理&#xff1a;主机负责写&#xff0c;从机可以多个负责读取。数据主从做同步。 业务的写发给主机&#xff0c;读操作发给从机。 条件&#xff1a;1业务量增长 2 其他优化条件已处理&#xff08;索引优化、缓存&a…

Linux学习之环境变量、预定义变量和位置变量

环境变量是每个Shell打开就能获取到的变量&#xff0c;即一打开终端就已经初始化的变量。 显示环境变量 set、env和declare都可以查看变量的值。按照可以查看信息的范围从小到大是env<set<declare。 env只能显示全局变量。 set可以输出所有的变量&#xff0c;包括全局…

多数据源切换、读写分离-02

使用dynamic进行数据源切换、读写分离 特性 1、支持数据源分组 &#xff0c;适用于多种场景纯粹多库读写分离一主多从混合模式。 2、支持数据库敏感配置信息 加密 ENC()。 3、支持每个数据库独立初始化表结构schema和数据库database。 4、支持无数据源启动&#xff0c;支持懒加…

【已解决】pyecharts大屏点击Save Config没反应,无法保存chart_config.json

在使用pyecharts开发大屏时&#xff0c;临时大屏拖拽好之后&#xff0c;点击Save Config之后没反应&#xff0c;没有弹出json保存对话框。 报错现象&#xff1a; 利用Python的pyecharts库的Page组件开发可视化大屏时&#xff0c;无法点击Save Config按钮。 问题原因&#xff1…

sonarqube安装并配置CI/CD

sonarqube安装使用 目录 简介效果(配置在下面查看)官方文档环境准备配置compose-sonarqube.yml启动登录集成Gitlab 获取私钥sonarqube配置gitlab查看项目 配置 手动方式Gitlab CI/CD 自动检测 简介 SonarQube是一个开源的代码质量管理平台&#xff0c;用于对代码进行静态代…

Kong简介

Kong 是一个开源的云原生 API 网关和服务网格&#xff0c;它提供了强大的流量控制、请求转发、日志记录、认证和授权等功能。 一、Kong Consumer Kong Consumer 是 Kong API 网关中的一个重要概念&#xff0c;它代表使用你的 API 的最终用户或客户端。Consumer 的创建和配置可…

Spring AOP知识点详解

Spring AOP是 Spring最核心的能力&#xff0c;那到底什么是AOP呢&#xff0c;今天了不起带大家了解一下。 AOP是什么 AOP(Aspect Oriented Programming):面向切面编程&#xff0c;是OOP(面向对象编程)的一个延续&#xff0c;其和OOP一样&#xff0c;也是一种编程思想&#xff0…

在Linux下做性能分析3:perf

介绍 ftrace的跟踪方法是一种总体跟踪法&#xff0c;换句话说&#xff0c;你统计了一个事件到下一个事件所有的时间长度&#xff0c;然后把它们放到时间轴上&#xff0c;你可以知道整个系统运行在时间轴上的分布。 这种方法很准确&#xff0c;但跟踪成本很高。所以&#xff0…

有道云笔记迁移到自建服务器Joplin

当前有道云笔记各项业务开始逐渐向会员靠拢&#xff0c;如一开始不受限的多端同步现在非会员限制成了两个终端&#xff0c;估计以后会有越来越多的免费内容会逐渐的向会员转移&#xff0c;因此博主开始考虑自建服务器来搞一个云笔记服务端。 因博主已有黑群晖&#xff0c;并且有…

OK3588运行python程序对摄像头数据进行图像处理

OK3588运行python程序读取usb摄像头 硬件连接用工具测试验证摄像头工作正常python 读取usb摄像头并进行图像处理 硬件连接 把usb摄像头插入HOST的usb接口。 在串口终端运行 sudo v4l2-ctl --list-devices 如下图 当前的usb设备是 /dev/video74 用工具测试验证摄像头工作正常…

基于深度学习的高精度80类动物目标检测系统(PyTorch+Pyside6+YOLOv5模型)

摘要&#xff1a;基于深度学习的高精度80类动物目标检测识别系统可用于日常生活中或野外来检测与定位80类动物目标&#xff0c;利用深度学习算法可实现图片、视频、摄像头等方式的80类动物目标检测识别&#xff0c;另外支持结果可视化与图片或视频检测结果的导出。本系统采用YO…

#4. 背包

4030: 背包 题目内容 有 n n n 个物品&#xff0c;每个物品有大小 w i w_i wi​ 和价值 v i v_i vi​&#xff0c;再给定一个整数 k k k 和背包大小 m m m&#xff0c;对每个 1 ≤ i ≤ n − k 1 1 \le i \le n - k 1 1≤i≤n−k1&#xff0c;求出如果只能选择 i i …