AngularJS上拉加载问题解决方法


Posted in Javascript onMay 23, 2016

项目中始终存在一个问题:当在搜索栏输入关键词后(见图1),按照既定的业务逻辑应该是服务端接收到请求后,首先返回查询的前7条数据,待客户端出现上拉加载时,继续查找另外7条数据。但实际情形是不确定的,在服务端控制台(见图2)可看到begno一直到了126,也就是相当于客户端往服务端请求了127次,这是一个令人无法忍受的结果。

AngularJS上拉加载问题解决方法 

图1 客户端搜索栏

AngularJS上拉加载问题解决方法

图2 服务端控制台

可以断定是客户端的业务逻辑出现了问题。返回到客户端,查看源码逻辑,修改如下:

控制器

$scope.medsearchMore = function() { 
console.log("上拉加载....." + isfinished); 
if (isfinished == 0) { 
begno += pcnt; 
var data = { 
"begno" : begno, // 起始序号 
"pagenum" : pagenum, // 每页返回条数 
"searchby": searchby 
}; 
if (searchType == 1) { 
data.classid = searchKey; 
console.log(data.classid); //--------1 
appCallServer($http, "9002", data, function(data) { 
console.log("下拉刷新查询结果rootScope.med:" + JSON.stringify(data.data)); 
for (var i = 0; i < data.pcnt; i++) { 
$rootScope.med.push(data.data[i]); 
} 
// 更新状态 
isfinished = data.isfinished; 
// 药品已查询完毕 
if(isfinished == '1'){ 
$scope.noMore = true; 
}else{ 
$scope.noMore = false; 
} 
pcnt = data.pcnt; 
}, function(data) { 
// 药品已查询完毕 
$scope.noMore = true; 
$ionicLoading.show({ 
template: data.errtext 
}); 
$timeout(function() { 
$ionicLoading.hide(); 
}, 1200); 
}); 
} 
} else { 
// 药品已查询完毕 
$scope.noMore = true; 
} 
$timeout(function() { 
$scope.$broadcast('scroll.infiniteScrollComplete'); 
}, 1200); 
};

视图

<!--当用户到达页脚或页脚附近时,ion-infinite-scroll指令允许你调用一个函数 。当用户滚动的距离超出底部的内容时,就会触发你指定的on-infinite--> 
<!--当没有更多数据加载时,就可以用一个简单的方法阻止无限滚动,那就是angular的ng-if指令--> 
<!--设置noMore初始值为true首次即点击分类查询时不进行下拉加载操作--> 
<ion-infinite-scroll on-infinite="medsearchMore()" distance="0.01%" icon="ion-loading-c"></ion-infinite-scroll> 
<div class="item" ng-if="noMore" align="center"><p>没有更多的药品了</p></div>

经过以上修改,可以实现避免不必要的请求。

AngularJS上拉加载问题解决方法

Javascript 相关文章推荐
一种JavaScript的设计模式
Nov 22 Javascript
jQuery+jRange实现滑动选取数值范围特效
Mar 14 Javascript
原生javascript实现addClass,removeClass,hasClass函数
Feb 25 Javascript
jquery拖动层效果插件用法实例分析(附demo源码)
Apr 28 Javascript
jQuery简单设置文本框回车事件的方法
Aug 01 Javascript
关于动态生成dom绑定事件失效的原因及解决方法
Aug 06 Javascript
BootStrapTable 单选及取值的实现方法
Jan 10 Javascript
jquery+ajaxform+springboot控件实现数据更新功能
Jan 22 jQuery
Vue点击切换颜色的方法
Sep 13 Javascript
Vue项目查看当前使用的elementUI版本的方法
Sep 27 Javascript
jQuery/JS监听input输入框值变化实例
Oct 17 jQuery
微信小程序 wx.getUserInfo引导用户授权问题实例分析
Mar 09 Javascript
在IE8上JS实现combobox支持拼音检索功能
May 23 #Javascript
浅析JavaScript 箭头函数 generator Date JSON
May 23 #Javascript
用js实现放大镜的效果的简单实例
May 23 #Javascript
jQuery实现摸拟alert提示框
May 22 #Javascript
javascript实现标签切换代码示例
May 22 #Javascript
超实用的JavaScript代码段 附使用方法
May 22 #Javascript
JavaScript数组合并的多种方法
May 22 #Javascript
You might like
PHP实现扎金花游戏之大小比赛的方法
2015/03/10 PHP
Smarty日期时间操作方法示例
2016/11/15 PHP
PHP图像处理 imagestring添加图片水印与文字水印操作示例
2020/02/06 PHP
Yii框架多语言站点配置方法分析【中文/英文切换站点】
2020/04/07 PHP
jquery判断checkbox(复选框)是否被选中的代码
2010/10/20 Javascript
基于jquery的弹出提示框始终处于窗口的居中位置(类似于alert弹出框的效果)
2011/09/28 Javascript
利用js读取动态网站从服务器端返回的数据
2014/02/10 Javascript
使用CSS3的scale实现网页整体缩放
2014/03/18 Javascript
javascript对中文按照拼音排序代码
2014/08/20 Javascript
Vue.js第二天学习笔记(vue-router)
2016/12/01 Javascript
javascript动画系列之模拟滚动条
2016/12/13 Javascript
什么是Vue.js框架 为什么选择它?
2017/10/17 Javascript
JavaScript屏蔽Backspace键的实现代码
2017/11/02 Javascript
微信小程序使用slider设置数据值及switch开关组件功能【附源码下载】
2017/12/09 Javascript
vue 简单自动补全的输入框的示例
2018/03/12 Javascript
Angularjs实现控制器之间通信方式实例总结
2018/03/27 Javascript
nodejs基础之常用工具模块util用法分析
2018/12/26 NodeJs
JavaScript变量作用域及内存问题实例分析
2019/06/10 Javascript
Node.js中文件系统fs模块的使用及常用接口
2020/03/06 Javascript
基于Electron实现桌面应用开发代码实例
2020/07/07 Javascript
vue实现简易的双向数据绑定
2020/12/29 Vue.js
[45:16]完美世界DOTA2联赛PWL S3 Magma vs Phoenix 第一场 12.12
2020/12/16 DOTA
Python读写Excel文件的实例
2013/11/01 Python
Python中使用装饰器时需要注意的一些问题
2015/05/11 Python
python安装PIL模块时Unable to find vcvarsall.bat错误的解决方法
2016/09/19 Python
Python使用sax模块解析XML文件示例
2019/04/04 Python
python3 requests库文件上传与下载实现详解
2019/08/22 Python
VICHY薇姿英国官网:全球专业敏感肌护肤领先品牌
2017/07/04 全球购物
几个Shell Script面试题
2014/04/18 面试题
贷款委托书怎么写
2014/08/02 职场文书
小学三八妇女节活动总结
2015/02/06 职场文书
2015年母亲节活动总结
2015/02/10 职场文书
争先创优个人总结
2015/03/04 职场文书
2015年政风行风工作总结
2015/04/21 职场文书
python基础之爬虫入门
2021/05/10 Python
Java内存模型之happens-before概念详解
2021/06/13 Java/Android