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 Hash对象 学习
Jul 19 Javascript
基于Jquery的淡入淡出的特效基础练习
Dec 13 Javascript
JavaScript通过Date-Mask将日期转换成字符串的方法
Jun 04 Javascript
javascript实现在网页中运行本地程序的方法
Feb 03 Javascript
JavaScript的模块化开发框架Sea.js上手指南
May 12 Javascript
AngularJS  自定义指令详解及实例代码
Sep 14 Javascript
vue父子组件的数据传递示例
Mar 07 Javascript
JavaScript实现省市联动过程中bug的解决方法
Dec 04 Javascript
详解angularjs 学习之 scope作用域
Jan 15 Javascript
vueScroll实现移动端下拉刷新、上拉加载
Mar 22 Javascript
babel7.x和webpack4.x配置vue项目的方法步骤
May 12 Javascript
jquery+ajax实现异步上传文件显示进度条
Aug 17 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
兼容各大浏览器带关闭按钮的漂浮多组图片广告代码
2014/06/05 PHP
PHP实现将HTML5中Canvas图像保存到服务器的方法
2014/11/28 PHP
浅谈php7的重大新特性
2015/10/23 PHP
thinkPHP3.2简单实现文件上传的方法
2016/05/16 PHP
浅谈PHP发送HTTP请求的几种方式
2017/07/25 PHP
[原创]PHP实现字节数Byte转换为KB、MB、GB、TB的方法
2017/08/31 PHP
在云虚拟主机部署thinkphp5项目的步骤详解
2017/12/21 PHP
Js 订制自己的AlertBox(信息提示框)
2009/01/09 Javascript
CSS+Table图文混排中实现文本自适应图片宽度(超简单+跨所有浏览器)
2009/02/14 Javascript
Javascript this指针
2009/07/30 Javascript
jquery中focus()函数实现当对象获得焦点后自动把光标移到内容最后
2013/09/29 Javascript
node.js中的fs.lchmodSync方法使用说明
2014/12/16 Javascript
JS实现放大、缩小及拖拽图片的方法【可兼容IE、火狐】
2016/08/23 Javascript
javascript 判断是否是微信浏览器的方法
2016/10/09 Javascript
详解webpack+angular2开发环境搭建
2017/06/28 Javascript
vue表单绑定实现多选框和下拉列表的实例
2017/08/12 Javascript
javascript头像上传代码实例
2019/09/28 Javascript
详解Python程序与服务器连接的WSGI接口
2015/04/29 Python
在Windows系统上搭建Nginx+Python+MySQL环境的教程
2015/12/25 Python
python深度优先搜索和广度优先搜索
2018/02/07 Python
Python3 合并二叉树的实现
2019/09/30 Python
python和js交互调用的方法
2020/06/23 Python
CSS3制作Dropdown下拉菜单的方法
2015/07/18 HTML / CSS
NEW LOOK官网:英国时装零售巨头之一,快时尚品牌
2017/01/11 全球购物
我为自己代言广告词
2014/03/18 职场文书
网络编辑求职信
2014/04/30 职场文书
创业培训计划书
2014/05/03 职场文书
单位承诺书格式
2014/05/21 职场文书
2014年财务科工作总结
2014/11/11 职场文书
2014学生会工作总结报告
2014/12/02 职场文书
2015年新教师工作总结
2015/04/28 职场文书
防卫过当辩护词
2015/05/21 职场文书
幼儿园开学报名通知
2015/07/16 职场文书
2016年十一促销广告语
2016/01/28 职场文书
MySQL空间数据存储及函数
2021/09/25 MySQL
SpringBoot集成Redis的思路详解
2021/10/16 Redis