详解angular分页插件tm.pagination二次触发问题解决方案


Posted in Javascript onJuly 20, 2018

今天在学习angularjs的分页插件时遇到了一个前端的问题,谷歌浏览器开发者模式调试的时候发现每次点击分页刷新按钮会触发两次后台请求,ajax向后台发送了两次请求,这对于强迫症患者来说是一个比较恶心和感到不舒服的事情。

于是在网上也找到了靠谱的解决方案:http://jqvue.com/tm.pagination/ ,且在此维护者的这个版本中解决了此问题,同时注意 angularjs版本的配合使用。但是不满足于现状,我还是找到了自己的解决方案,不打针不吃药,就这么简单!粗暴!It's time to show the code!!

var app = angular.module("shopping", [ 'pagination' ]);
  app.controller("brandController",
      function($scope, $http) {
        $scope.reloadList = function() {
          //切换页码 
          $scope.findPage($scope.paginationConf.currentPage,
              $scope.paginationConf.itemsPerPage);
        }
        $scope.reload = true;
        //分页控件配置 
        $scope.paginationConf = {
          currentPage : 1,
          totalItems : 10,
          itemsPerPage : 10,
          perPageOptions : [ 10, 20, 30, 40, 50 ],
          onChange : function() {
            if(!$scope.reload) {
              return;
            }
            $scope.reloadList();//重新加载 这个方法会重复调用两次
            $scope.reload = false;
            setTimeout(function() {
              $scope.reload = true;
            }, 200);
          }
        };
        //分页
        $scope.findPage = function(page, rows) {
          
          $http.get(
              '../goods/findAll?pageNum=' + page + '&pageSize='
                  + rows).success(function(response) {
            $scope.list = response.rows;
            $scope.paginationConf.totalItems = response.total;//更新总记录数
          });
        }

      });

核心代码我已经用黑色字体加粗标识出来了,定义一个全局变量reload存于$scope上,第二次触发加载reload的时候就发现这个全局变量为false状态,则直接return。之后再用定时器setTimeout在200毫秒之后将其归位。下一次刷新不会受影响且每次刷新只会发送一次ajax,提升请求质量与用户体验。

注:此方法不仅限于实现ajax的请求重复发送问题,其他类似的重复行为可参考本实例的实现思想,注意全局变量的合理使用,减少内存浪费问题。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
JQuery操作tr和td内容的方法实例
Mar 06 Javascript
javascript中HTMLDOM操作详解
Dec 11 Javascript
jquery获得当前html页面源码的方法
Jul 14 Javascript
js调用百度地图及调用百度地图的搜索功能
Sep 07 Javascript
javascript实现简易计算器的代码
May 31 Javascript
项目实践一图片上传之form表单还是base64前端图片压缩(前端图片压缩)
Jul 28 Javascript
javascript实现的左右无缝滚动效果
Sep 19 Javascript
整理一下常见的IE错误
Nov 18 Javascript
js单页hash路由原理与应用实战详解
Aug 14 Javascript
jQuery实现鼠标响应式淘宝动画效果示例
Feb 13 jQuery
JS正则表达式封装与使用操作示例
May 15 Javascript
VueCli3.0中集成MockApi的方法示例
Jul 05 Javascript
小程序视频列表中视频的播放与停止的示例代码
Jul 20 #Javascript
微信小程序实现topBar底部选择栏效果
Jul 20 #Javascript
JS+H5 Canvas实现时钟效果
Jul 20 #Javascript
详解处理bootstrap4不支持远程静态框问题
Jul 20 #Javascript
基于Vue+element-ui 的Table二次封装的实现
Jul 20 #Javascript
webpack+vue-cil中proxyTable处理跨域的方法
Jul 20 #Javascript
详解vue-cli官方脚手架配置
Jul 20 #Javascript
You might like
用DBSQL类加快开发MySQL数据库程序的速度
2006/10/09 PHP
PHP高自定义性安全验证码代码
2011/11/27 PHP
使用XHGui来测试PHP性能的教程
2015/07/03 PHP
PHP数学运算函数大汇总(经典值得收藏)
2016/04/01 PHP
ECSHOP完美解决Deprecated: preg_replace()报错的问题
2016/05/17 PHP
thinkphp3.x中display方法及show方法的用法实例
2016/05/19 PHP
Yii框架布局文件的动态切换操作示例
2019/11/11 PHP
Apply an AutoFormat to an Excel Spreadsheet
2007/06/12 Javascript
用JS写的一个TableView控件代码
2010/01/23 Javascript
jQuery 方法大全方便学习参考
2010/02/25 Javascript
jQuery插件jQuery-JSONP开发ajax调用使用注意事项
2013/11/22 Javascript
jquery防止重复执行动画避免页面混乱
2014/04/22 Javascript
jquery单击事件和双击事件冲突解决方案
2016/03/02 Javascript
JS实现图片垂直居中显示小结
2016/12/13 Javascript
js中常用的Math方法总结
2017/01/12 Javascript
Angularjs 依赖压缩及自定义过滤器写法
2017/02/04 Javascript
手机注册发送验证码倒计时的简单实例
2017/11/15 Javascript
如何在基于vue-cli的项目自定义打包环境
2018/11/10 Javascript
cocos2dx+lua实现橡皮擦功能
2018/12/20 Javascript
实例介绍JavaScript中多种组合继承
2019/01/20 Javascript
vue如何截取字符串
2019/05/06 Javascript
jquery3和layui冲突导致使用layui.layer.full弹出全屏iframe窗口时高度152px问题
2019/05/12 jQuery
js 对象使用的小技巧实例分析
2019/11/08 Javascript
在Python的web框架中配置app的教程
2015/04/30 Python
django 通过ajax完成邮箱用户注册、激活账号的方法
2018/04/17 Python
利用python控制Autocad:pyautocad方式
2020/06/01 Python
详解python中的闭包
2020/09/07 Python
应用电子专业学生的自我评价
2013/10/16 职场文书
毕业生大学生活自我总结
2014/01/31 职场文书
《那片绿绿的爬山虎》教学反思
2014/02/27 职场文书
《水上飞机》教学反思
2014/04/10 职场文书
教师节感谢信
2015/01/22 职场文书
庆祝教师节主题班会
2015/08/17 职场文书
2016党员干部廉政准则学习心得体会
2016/01/20 职场文书
干货:如何写好工作总结报告!
2019/05/10 职场文书
详解Redis瘦身指南
2021/05/26 Redis