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生成GUID的多种算法小结
Aug 18 Javascript
appendChild() 或 insertBefore()使用与区别介绍
Oct 11 Javascript
JavaScript中的函数嵌套使用
Jun 04 Javascript
jQuery绑定自定义事件的魔法升级版
Jun 30 Javascript
jquery实现轮播图效果
Feb 13 Javascript
快速使用node.js进行web开发详解
Apr 26 Javascript
es6 字符串String的扩展(实例讲解)
Aug 03 Javascript
vue实现仿淘宝结账页面实例代码
Nov 08 Javascript
浅谈Node模块系统及其模式
Nov 17 Javascript
axios进阶实践之利用最优雅的方式写ajax请求
Dec 20 Javascript
微信小程序switch开关选择器使用详解
Jan 31 Javascript
react中使用css的7中方式(最全总结)
Feb 11 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
一个ftp类(ini.php)
2006/10/09 PHP
PHP常用特殊运算符号和函数总结(php新手入门必看)
2013/02/02 PHP
php实现的获取网站备案信息查询代码(360)
2013/09/23 PHP
简单谈谈php中的unicode和utf8编码
2015/06/10 PHP
curl 出现错误的调试方法(必看)
2017/02/13 PHP
用js 让图片在 div或dl里 居中,底部对齐
2008/01/21 Javascript
JS支持带x身份证号码验证函数
2008/08/10 Javascript
js 自动播放的实例代码
2013/11/19 Javascript
使表格的标题列可左右拉伸jquery插件封装
2014/11/24 Javascript
Node.js事件循环(Event Loop)和线程池详解
2015/01/28 Javascript
jQuery获取页面及个元素高度、宽度的总结——超实用
2015/07/28 Javascript
JavaScript实现可拖拽的拖动层Div实例
2015/08/05 Javascript
基于Jquery制作图片文字排版预览效果附源码下载
2015/11/18 Javascript
AngularJS中监视Scope变量以及外部调用Scope方法
2016/01/23 Javascript
APP中javascript+css3实现下拉刷新效果
2016/01/27 Javascript
jQuery鼠标滑过横向时间轴样式(代码详解)
2019/11/01 jQuery
JavaScript实现网页tab栏效果制作
2020/11/20 Javascript
浅谈numpy中linspace的用法 (等差数列创建函数)
2017/06/07 Python
Python3实现计算两个数组的交集算法示例
2019/04/03 Python
利用Python查看微信共同好友功能的实现代码
2019/04/24 Python
django settings.py 配置文件及介绍
2019/07/15 Python
pandas中DataFrame修改index、columns名的方法示例
2019/08/02 Python
Python数据可视化处理库PyEcharts柱状图,饼图,线性图,词云图常用实例详解
2020/02/10 Python
HTTP状态码详解
2021/03/18 杂记
GoPro摄像机美国官网:美国运动相机厂商
2018/07/03 全球购物
乌克兰在线药房:Аптека24
2019/10/30 全球购物
电子信息工程自荐信
2014/05/26 职场文书
师德师风建设整改措施思想汇报
2014/10/11 职场文书
承兑汇票转让证明怎么写?
2014/11/30 职场文书
大学生自荐书范文
2015/03/05 职场文书
MySQL复制问题的三个参数分析
2021/04/07 MySQL
Python趣味挑战之用pygame实现简单的金币旋转效果
2021/05/31 Python
Mysql外键约束的创建与删除的使用
2022/03/03 MySQL
Java实现经典游戏泡泡堂的示例代码
2022/04/04 Java/Android
Android存储中最基本的文件存储方式
2022/04/30 Java/Android