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 相关文章推荐
jquery使用$(element).is()来判断获取的tagName
Aug 24 Javascript
JavaScript 事件绑定及深入
Apr 13 Javascript
JavaScript中的对象与JSON
Jul 03 Javascript
jQuery ajax 当async为false时解决同步操作失败的问题
Nov 18 Javascript
解析JavaScript模仿块级作用域
Dec 29 Javascript
angular使用bootstrap方法手动启动的实例代码
Jul 18 Javascript
AngularJs的UI组件ui-Bootstrap之Tooltip和Popover
Jul 13 Javascript
JavaScript中set与get方法用法示例
Aug 15 Javascript
解决Vue-cli npm run build生产环境打包,本地不能打开的问题
Sep 20 Javascript
详解Vue Elementui中的Tag与页面其它元素相互交互的两三事
Sep 25 Javascript
深入理解javascript prototype的相关知识
Sep 19 Javascript
Jquery+AJAX实现无刷新上传并重命名文件操作示例【PHP后台接收】
May 29 jQuery
在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完整的日历类(CLASS)
2006/11/27 PHP
dedecms中使用php语句指南
2014/11/13 PHP
jQuery获取json后使用zy_tmpl生成下拉菜单
2015/03/27 PHP
javascript 导出数据到Excel(处理table中的元素)
2009/12/18 Javascript
JSON.parse 解析字符串出错的解决方法
2010/07/08 Javascript
Jquery实现的一种常用高亮效果示例代码
2014/01/28 Javascript
jQuery中关于ScrollableGridPlugin.js(固定表头)插件的使用逐步解析
2014/07/17 Javascript
JS+CSS实现Li列表隔行换色效果的方法
2015/02/16 Javascript
bootstrap表格分页实例讲解
2016/12/30 Javascript
基于js粘贴事件paste简单解析以及遇到的坑
2017/09/07 Javascript
Vuejs中使用markdown服务器端渲染的示例
2017/11/22 Javascript
layui 表格操作列按钮动态显示的实现方法
2019/09/06 Javascript
浅谈vue-router路由切换 组件重用挖下的坑
2019/11/01 Javascript
Antd中单个DatePicker限定时间输入范围操作
2020/10/29 Javascript
Python cookbook(数据结构与算法)让字典保持有序的方法
2018/02/18 Python
python logging日志模块以及多进程日志详解
2018/04/18 Python
Python爬虫 urllib2的使用方法详解
2019/09/23 Python
python绘制BA无标度网络示例代码
2019/11/21 Python
Python对wav文件的重采样实例
2020/02/25 Python
Python递归调用实现数字累加的代码
2020/02/25 Python
HTML5 CSS3新的WEB标准和浏览器支持
2009/07/16 HTML / CSS
GAP阿联酋官网:GAP UAE
2017/11/30 全球购物
Michael Kors加拿大官网:购买设计师手袋、手表、鞋子、服装等
2019/03/16 全球购物
运动会解说词200字
2014/02/06 职场文书
致裁判员加油稿
2014/02/08 职场文书
公司委托书格式范文
2014/04/04 职场文书
新书发布会策划方案
2014/06/09 职场文书
面试自我评价范文
2014/09/17 职场文书
2014新生大学四年计划书
2014/09/21 职场文书
2015年创先争优工作总结
2015/05/23 职场文书
2016年毕业实习心得体会范文
2015/10/09 职场文书
Python 制作自动化翻译工具
2021/04/25 Python
element多个表单校验的实现
2021/05/27 Javascript
JavaScript 原型与原型链详情
2021/11/02 Javascript
python 远程执行命令的详细代码
2022/02/15 Python
使用CSS实现百叶窗效果示例代码
2023/05/07 HTML / CSS