详解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 相关文章推荐
javascript getElementsByClassName 和js取地址栏参数
Jan 02 Javascript
基于jquery的3d效果实现代码
Mar 23 Javascript
jQuery获取动态生成的元素示例
Jun 15 Javascript
小米公司JavaScript面试题
Dec 29 Javascript
js父页面中使用子页面的方法
Jan 09 Javascript
JavaScript性能优化之函数节流(throttle)与函数去抖(debounce)
Aug 11 Javascript
JavaScript中ES6字符串扩展方法
Aug 26 Javascript
教你快速搭建Node.Js服务器的方法教程
Mar 30 Javascript
JS实现简单拖拽效果
Jun 21 Javascript
JS二级菜单不同实现方法分析【4种方法】
Dec 21 Javascript
说说如何使用Vuex进行状态管理(小结)
Apr 14 Javascript
深入理解Vue keep-alive及实践总结
Aug 21 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
使用PHP模拟HTTP认证
2006/10/09 PHP
php Xdebug 调试扩展的安装与使用.
2010/03/13 PHP
PHP自定session保存路径及删除、注销与写入的方法
2014/11/18 PHP
WordPress中获取页面链接和标题的相关PHP函数用法解析
2015/12/17 PHP
PHP类的声明与实例化及构造方法与析构方法详解
2016/01/26 PHP
浅谈php fopen下载远程文件的函数
2016/11/18 PHP
PHP中大括号'{}'用法实例总结
2017/02/08 PHP
javascript生成/解析dom的CDATA类型的字段的代码
2007/04/22 Javascript
json2.js的初步学习与了解
2011/10/06 Javascript
jQuery写的日历(包括日历的样式及功能)
2013/04/23 Javascript
javascript制作游戏开发碰撞检测的封装代码
2015/03/31 Javascript
js验证身份证号有效性并提示对应信息
2015/10/19 Javascript
JavaScript的instanceof运算符学习教程
2016/06/08 Javascript
javaScript事件机制兼容【详细整理】
2016/07/23 Javascript
JS在Chrome浏览器中showModalDialog函数返回值为undefined的解决方法
2016/08/03 Javascript
jQuery双向列表选择器select版
2016/11/01 Javascript
任意Json转成无序列表的方法示例
2016/12/09 Javascript
利用Query+bootstrap和js两种方式实现日期选择器
2017/01/10 Javascript
微信小程序开发背景图显示功能
2018/08/08 Javascript
JavaScript Canvas实现验证码
2020/08/02 Javascript
Python中的pass语句使用方法讲解
2015/05/14 Python
Python读大数据txt
2016/03/28 Python
浅谈机器学习需要的了解的十大算法
2017/12/15 Python
Python随机函数random()使用方法小结
2018/04/29 Python
Python产生Gnuplot绘图数据的方法
2018/11/09 Python
Python字符串中添加、插入特定字符的方法
2019/09/10 Python
利用PyQt5+Matplotlib 绘制静态/动态图的实现代码
2020/07/13 Python
利用Python实现字幕挂载(把字幕文件与视频合并)思路详解
2020/10/21 Python
html5 Canvas画图教程(9)—canvas中画出矩形和圆形
2013/01/09 HTML / CSS
Parfume Klik丹麦:香水网上商店
2018/07/10 全球购物
动物科学专业毕业生的自我评价
2013/11/29 职场文书
试用期转正鉴定评语
2014/01/27 职场文书
创业计划实施的7大步骤
2014/02/05 职场文书
医务人员医德考评自我评价
2015/03/03 职场文书
学校重阳节活动总结
2015/03/24 职场文书
各国货币符号大全
2022/02/17 杂记