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 TextBox自动完成条
Jul 22 Javascript
不同编码的页面表单数据乱码问题解决方法
Feb 15 Javascript
详解JavaScript设计模式开发中的桥接模式使用
May 18 Javascript
jQuery增加和删除表格项目及实现表格项目排序的方法
May 30 Javascript
JS获取一个未知DIV高度的方法
Aug 09 Javascript
BootStrap下拉框在firefox浏览器界面不友好的解决方案
Aug 18 Javascript
浅谈struts1 &amp; jquery form 文件异步上传
May 25 jQuery
详解ionic本地相册、拍照、裁剪、上传(单图完全版)
Oct 10 Javascript
详解layui弹窗父子窗口之间传参数的方法
Jan 16 Javascript
JavaScript中的惰性载入函数及优势
Feb 18 Javascript
VUE : vue-cli中去掉路由中的井号#操作
Sep 04 Javascript
JavaScript架构搭建前端监控如何采集异常数据
Jun 25 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回调函数概念与用法实例分析
2017/11/03 PHP
prototype class详解
2006/09/07 Javascript
Javascript 写的简单进度条控件
2008/01/22 Javascript
ExtJS GridPanel 根据条件改变字体颜色
2010/03/08 Javascript
2012年开发人员的16款新鲜的jquery插件体验分享
2012/12/28 Javascript
Jquery 类网页微信二维码图块滚动效果具体实现
2013/10/14 Javascript
document节点对象的获取方式示例介绍
2013/12/24 Javascript
浅谈document.write()输出样式
2015/05/07 Javascript
js微信分享API
2020/10/11 Javascript
AngularJS $injector 依赖注入详解
2016/09/14 Javascript
angular forEach方法遍历源码解读
2017/01/25 Javascript
Bootstrap BootstrapDialog使用详解
2017/02/17 Javascript
JavaScript之DOM_动力节点Java学院整理
2017/07/03 Javascript
总结javascript三元运算符知识点
2018/09/28 Javascript
微信小程序时间控件picker view使用详解
2018/12/28 Javascript
Javascript Dom元素获取和添加详解
2019/09/24 Javascript
Node.js Domain 模块实例详解
2020/03/18 Javascript
Vue实现背景更换颜色操作
2020/07/17 Javascript
Python程序设计入门(2)变量类型简介
2014/06/16 Python
Python聚类算法之DBSACN实例分析
2015/11/20 Python
python逆序打印各位数字的方法
2018/06/25 Python
Django更新models数据库结构步骤
2020/04/01 Python
IE兼容css3圆角的实现代码
2011/07/21 HTML / CSS
aden + anais官方网站:婴儿襁褓、毯子、尿布和服装
2017/06/21 全球购物
英国灯具和灯泡网上商店:Lights.co.uk
2018/02/02 全球购物
Bulk Powders意大利:运动补充在线商店
2019/02/09 全球购物
亚洲在线旅行门户网站:Expedia.com.hk(智游网)
2020/04/14 全球购物
2014村务公开实施方案
2014/02/25 职场文书
人资专员岗位职责
2014/04/04 职场文书
实习生工作证明范本
2014/09/14 职场文书
圣诞晚会主持词
2015/07/01 职场文书
简单介绍 http请求响应参数、无连接无状态、MIME、状态码、端口、telnet、curl
2021/03/31 HTML / CSS
uniapp开发小程序的经验总结
2021/04/08 Javascript
SpringBoot实现异步事件驱动的方法
2021/06/28 Java/Android
Jpa Specification如何实现and和or同时使用查询
2021/11/23 Java/Android
MySQL的表级锁,行级锁,排它锁和共享锁
2022/07/15 MySQL