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 相关文章推荐
获取焦点时,利用js定时器设定时间执行动作
Apr 02 Javascript
jquery 新手学习常见问题解决方法
Apr 18 Javascript
Jquery中使用setInterval和setTimeout的方法
Apr 08 Javascript
Struts2的s:radio标签使用及用jquery添加change事件
Apr 08 Javascript
js利用事件的阻止冒泡实现点击空白模态框的隐藏
Jan 24 Javascript
js+html5实现canvas绘制镂空字体文本的方法
Jun 05 Javascript
Angularjs 实现移动端在线测评效果(推荐)
Apr 05 Javascript
Vue动态获取width的方法
Aug 22 Javascript
Vue匿名插槽与作用域插槽的合并和覆盖行为
Apr 22 Javascript
jQuery操作cookie的示例代码
Jun 05 jQuery
vue+element使用动态加载路由方式实现三级菜单页面显示的操作
Aug 04 Javascript
解决vue项目 build之后资源文件找不到的问题
Sep 12 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使用CURL不依赖COOKIEJAR获取COOKIE的方法
2015/06/17 PHP
php数字每三位加逗号的功能函数
2015/10/22 PHP
php指定长度分割字符串str_split函数用法示例
2017/01/30 PHP
深入聊聊Array的sort方法的使用技巧.详细点评protype.js中的sortBy方法
2007/04/12 Javascript
从sohu弄下来的flash中展示图片的代码
2007/04/27 Javascript
Jquery 切换不同图片示例代码
2013/12/05 Javascript
js跳转页面方法实现汇总
2014/02/11 Javascript
微信小程序中实现一对多发消息详解及实例代码
2017/02/14 Javascript
js es6系列教程 - 基于new.target属性与es5改造es6的类语法
2017/09/02 Javascript
详解JSONObject和JSONArray区别及基本用法
2017/10/25 Javascript
浅谈React之状态(State)
2018/09/19 Javascript
JS/HTML5游戏常用算法之碰撞检测 像素检测算法实例详解
2018/12/12 Javascript
js常见遍历操作小结
2019/06/06 Javascript
微信小程序分享小程序码的生成(带参数)以及参数的获取
2020/03/25 Javascript
Vue实现购物车实例代码两则
2020/05/30 Javascript
ant design中upload组件上传大文件,显示进度条进度的实例
2020/10/29 Javascript
python连接远程ftp服务器并列出目录下文件的方法
2015/04/01 Python
Python中用PIL库批量给图片加上序号的教程
2015/05/06 Python
浅谈Python类里的__init__方法函数,Python类的构造函数
2016/12/10 Python
python得到windows自启动列表的方法
2018/10/14 Python
Python中创建二维数组
2018/10/17 Python
PyQt弹出式对话框的常用方法及标准按钮类型
2019/02/27 Python
Python 统计位数为偶数的数字代码详解
2020/03/15 Python
PyCharm2019.3永久激活破解详细图文教程,亲测可用(不定期更新)
2020/10/29 Python
Python try except finally资源回收的实现
2021/01/25 Python
西班牙美妆电商:Perfume’s Club(有中文站)
2018/08/08 全球购物
TobyDeals美国:在电子产品上获得最好的优惠和折扣
2019/08/11 全球购物
法国一家多品牌成衣精品中/高档商店:Graduate Store
2019/08/28 全球购物
某个公司的Java笔面试题
2016/03/11 面试题
工商管理专业应届生求职信
2013/11/04 职场文书
股东合作协议书
2014/04/14 职场文书
党的群众路线教育实践活动总结
2014/10/30 职场文书
监察建议书
2015/02/04 职场文书
水知道答案观后感
2015/06/08 职场文书
国庆节主题班会
2015/08/15 职场文书
利用Python第三方库实现预测NBA比赛结果
2021/06/21 Python