详解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 相关文章推荐
js右键菜单效果代码
Jul 21 Javascript
xml文档转换工具,附图表例子(hta)
Nov 17 Javascript
使用javascript控制cookie显示和隐藏背景图
Feb 12 Javascript
javascript中定义类的方法汇总
Dec 28 Javascript
php常见的页面跳转方法汇总
Apr 15 Javascript
jQuery Validate验证框架经典大全
Sep 23 Javascript
仿百度换肤功能的简单实例代码
Jul 11 Javascript
微信小程序 wx.request方法的异步封装实例详解
May 18 Javascript
AngularJS实现的输入框字数限制提醒功能示例
Oct 26 Javascript
如何用Node写页面爬虫的工具集
Oct 26 Javascript
Node.js + express实现上传大文件的方法分析【图片、文本文件】
Mar 14 Javascript
JavaScript实现多球运动效果
Sep 07 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多图上传小程序代码
2011/07/17 PHP
php旋转图片90度的方法
2013/11/07 PHP
php设计模式之命令模式使用示例
2014/03/02 PHP
php计算函数执行时间的方法
2015/03/20 PHP
php实现的简单检验登陆类
2015/06/18 PHP
PHP用PDO如何封装简单易用的DB类详解
2017/07/30 PHP
js资料prototype 属性
2007/03/13 Javascript
JavaScript 输入框内容格式验证代码
2010/02/11 Javascript
纯JavaScript实现的分页插件实例
2015/07/14 Javascript
js实现浮动在网页右侧的简洁QQ在线客服代码
2015/09/04 Javascript
AngularJS初始化静态模板详解
2016/01/14 Javascript
解决jquery无法找到其他父级子集问题的方法
2016/05/10 Javascript
JS判断输入字符串长度实例代码(汉字算两个字符,字母数字算一个)
2016/08/02 Javascript
BootStrap实现手机端轮播图左右滑动事件
2016/10/13 Javascript
Javascript实现数组中的元素上下移动
2017/04/28 Javascript
基于wordpress的ajax写法详解
2018/01/02 Javascript
Redux实现组合计数器的示例代码
2018/07/04 Javascript
AngularJs的UI组件ui-Bootstrap之Tooltip和Popover
2018/07/13 Javascript
Vue 动态组件components和v-once指令的实现
2019/08/30 Javascript
python获得图片base64编码示例
2014/01/16 Python
python 堆和优先队列的使用详解
2019/03/05 Python
Python 中的参数传递、返回值、浅拷贝、深拷贝
2019/06/25 Python
Python装饰器使用你可能不知道的几种姿势
2019/10/25 Python
Python关于__name__属性的含义和作用详解
2020/02/19 Python
Python Pandas 对列/行进行选择,增加,删除操作
2020/05/17 Python
python如何操作mysql
2020/08/17 Python
SIDESTEP荷兰:在线购买鞋子
2019/11/18 全球购物
汽车电子与维修专业大学生求职信
2013/09/28 职场文书
激情洋溢的毕业生就业求职信
2014/03/15 职场文书
宾馆仓管员岗位职责
2014/07/27 职场文书
投资意向协议书
2015/01/29 职场文书
安徽导游词
2015/02/12 职场文书
2015年幼儿园个人工作总结
2015/04/25 职场文书
2015年体育教师个人工作总结
2015/05/12 职场文书
车位出租协议书范本
2016/03/19 职场文书
mysql 带多个条件的查询方式
2021/06/05 MySQL