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 AOP 实现ajax回调函数使用比较方便
Nov 20 Javascript
分享28款免费实用的 JQuery 图片和内容滑块插件
Dec 15 Javascript
深入讲解AngularJS中的自定义指令的使用
Jun 18 Javascript
JS实现具备延时功能的滑动门菜单效果
Sep 17 Javascript
JavaScript tab选项卡插件实例代码
Feb 23 Javascript
JS中判断null的方法分析
Nov 21 Javascript
微信小程序 开发之滑块视图容器(swiper)详解及实例代码
Feb 22 Javascript
node+vue实现用户注册和头像上传的实例代码
Jul 20 Javascript
React Native如何消除启动时白屏的方法
Aug 08 Javascript
js实现的格式化数字和金额功能简单示例
Jul 30 Javascript
Vue如何基于es6导入外部js文件
May 15 Javascript
vue-treeselect的基本用法以及解决点击无法出现拉下菜单
Apr 30 Vue.js
在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
把从SQL中取出的数据转化成XMl格式
2006/10/09 PHP
教你如何解密 “ PHP 神盾解密工具 ”
2014/06/20 PHP
有效的捕获JavaScript焦点的方法小结
2009/10/08 Javascript
javascript基础知识大集锦(一) 推荐收藏
2011/01/13 Javascript
javascript 学习笔记(八)javascript对象
2011/04/12 Javascript
JavaScript高级程序设计(第3版)学习笔记12 js正则表达式
2012/10/11 Javascript
JS合并数组的几种方法及优劣比较
2014/09/19 Javascript
jquery实现的动态回到顶部特效代码
2015/10/28 Javascript
JavaScript实现数据类型的相互转换
2016/03/06 Javascript
在ABP框架中使用BootstrapTable组件的方法
2017/07/31 Javascript
微信小程序之数据缓存的实例详解
2017/09/29 Javascript
js定时器+简单的动画效果实例
2017/11/10 Javascript
Vue引入jquery实现平滑滚动到指定位置
2018/05/09 jQuery
使用Vue实现图片上传的三种方式
2018/07/17 Javascript
使用koa-log4管理nodeJs日志笔记的使用方法
2018/11/30 NodeJs
浅谈vue.use()方法从源码到使用
2019/05/12 Javascript
python二叉树遍历的实现方法
2013/11/21 Python
python中的__slots__使用示例
2015/02/26 Python
在Python的while循环中使用else以及循环嵌套的用法
2015/10/14 Python
Python调用C语言的方法【基于ctypes模块】
2018/01/22 Python
Windows系统下PhantomJS的安装和基本用法
2018/10/21 Python
关于tf.reverse_sequence()简述
2020/01/20 Python
Python json读写方式和字典相互转化
2020/04/18 Python
利用python实现平稳时间序列的建模方式
2020/06/03 Python
详解Python 函数参数的拆解
2020/09/02 Python
python BeautifulSoup库的安装与使用
2020/12/17 Python
Perricone MD裴礼康美国官网:抗衰老护肤品
2016/09/26 全球购物
英国折扣零售连锁店:QD Stores
2018/12/08 全球购物
Kathmandu新西兰官网:新西兰户外运动品牌
2019/07/27 全球购物
params有什么用
2016/03/01 面试题
四年级下册教学反思
2014/02/01 职场文书
人大代表选举标语
2014/10/07 职场文书
社区党员群众路线教育实践活动心得体会
2014/11/03 职场文书
施工安全员岗位职责
2015/04/11 职场文书
退休欢送会致辞
2015/07/31 职场文书
详解Python 3.10 中的新功能和变化
2021/04/28 Python