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 相关文章推荐
初学prototype,发个JS接受URL参数的代码
Sep 25 Javascript
js获取元素在浏览器中的绝对位置
Jul 24 Javascript
jQuery数组处理代码详解(含实例演示)
Feb 03 Javascript
jquery ajax的success回调函数中实现按钮置灰倒计时
Nov 19 Javascript
js判断字符是否是汉字的两种方法小结
Jan 03 Javascript
JQuery分屏指示器图片轮换效果实例
May 21 Javascript
jquery模拟实现鼠标指针停止运动事件
Jan 12 Javascript
基于jQuery对象和DOM对象和字符串之间的转化实例
Aug 08 jQuery
VSCode配置react开发环境的步骤
Dec 27 Javascript
vue请求数据的三种方式
Mar 04 Javascript
解决vue中使用less/sass及使用中遇到无效的问题
Oct 24 Javascript
解决Antd Table组件表头不对齐的问题
Oct 27 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
pdo中使用参数化查询sql
2011/08/11 PHP
PHP加密扩展库Mcrypt安装和实例
2013/11/10 PHP
PHP中字符与字节的区别及字符串与字节转换示例
2016/10/15 PHP
php数组遍历类与用法示例
2019/05/24 PHP
javascript延时重复执行函数 lLoopRun.js
2007/06/29 Javascript
动态添加删除表格行的js实现代码
2014/02/28 Javascript
跟我学Nodejs(二)--- Node.js事件模块
2014/05/21 NodeJs
js实现div层缓慢收缩与展开的方法
2015/05/11 Javascript
jQuery封装的屏幕居中提示信息代码
2016/06/08 Javascript
Vue.js每天必学之计算属性computed与$watch
2016/09/05 Javascript
微信小程序 在线支付功能的实现
2017/03/14 Javascript
JavaScript数据类型和变量_动力节点Java学院整理
2017/06/26 Javascript
WdatePicker.js时间日期插件的使用方法
2017/07/26 Javascript
React Native 集成jpush-react-native的示例代码
2017/08/16 Javascript
js+canvas实现滑动拼图验证码功能
2018/03/26 Javascript
WebSocket的通信过程与实现方法详解
2018/04/29 Javascript
vue debug 二种方法
2018/09/16 Javascript
新手快速入门微信小程序组件库 iView Weapp
2019/06/24 Javascript
layui table 表格上添加日期控件的两种方法
2019/09/28 Javascript
[02:38]DOTA2亚洲邀请赛 IG战队巡礼
2015/02/03 DOTA
python解析xml模块封装代码
2014/02/07 Python
在RedHat系Linux上部署Python的Celery框架的教程
2015/04/07 Python
Python使用ftplib实现简易FTP客户端的方法
2015/06/03 Python
Python实现MySQL操作的方法小结【安装,连接,增删改查等】
2017/07/12 Python
python交互式图形编程实例(一)
2017/11/17 Python
python让列表倒序输出的实例
2018/06/25 Python
对python中GUI,Label和Button的实例详解
2019/06/27 Python
Django用数据库表反向生成models类知识点详解
2020/03/25 Python
详解pandas映射与数据转换
2021/01/22 Python
CSS3的RGBA中关于整数和百分比值的转换
2015/08/04 HTML / CSS
新东网科技Java笔试题
2012/07/13 面试题
葛优非诚勿扰搞笑征婚台词
2014/03/17 职场文书
爱之链教学反思
2014/04/30 职场文书
咖啡厅商业计划书
2014/09/15 职场文书
百善孝为先:关于孝道的经典语录
2019/10/18 职场文书
python异步的ASGI与Fast Api实现
2021/07/16 Python