详解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与asp.net(c#)互相调用方法
Dec 13 Javascript
jquery 删除字符串最后一个字符的方法解析
Feb 11 Javascript
js如何判断用户是否是用微信浏览器
Jun 05 Javascript
jquery实现的3D旋转木马特效代码分享
Aug 25 Javascript
javascript创建含数字字母的随机字符串方法总结
Aug 01 Javascript
基于vue-cli 打包时抽离项目相关配置文件详解
Mar 07 Javascript
如何利用@angular/cli V6.0直接开发PWA应用详解
May 06 Javascript
JS函数参数的传递与同名参数实例分析
Mar 16 Javascript
浅析TypeScript 命名空间
Mar 19 Javascript
javascript中正则表达式语法详解
Aug 07 Javascript
Ant Design Pro 之 ProTable使用操作
Oct 31 Javascript
Vue-router编程式导航的两种实现代码
Mar 04 Vue.js
小程序视频列表中视频的播放与停止的示例代码
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
JS获取页面窗口大小的代码解读
2011/12/01 Javascript
从面试题学习Javascript 面向对象(创建对象)
2012/03/30 Javascript
js弹窗返回值详解(window.open方式)
2014/01/11 Javascript
javascript动态判断html元素并执行不同的操作
2014/06/16 Javascript
在JS数组特定索引处指定位置插入元素的技巧
2014/08/24 Javascript
javascript实现回车键提交表单方法总结
2015/01/10 Javascript
详解JavaScript的策略模式编程
2015/06/24 Javascript
js实现汉字排序的方法
2015/07/23 Javascript
JS实现仿新浪微博发布内容为空时提示功能代码
2015/08/19 Javascript
页面get请求 中文参数方法乱码问题的快速解决方法
2016/05/31 Javascript
JS数组去重(4种方法)
2017/03/27 Javascript
vue与bootstrap实现时间选择器的示例代码
2017/08/26 Javascript
关于JavaScript语句后面的分号问题
2017/12/07 Javascript
NodeJS父进程与子进程资源共享原理与实现方法
2018/03/16 NodeJs
Bootstrap开发中Tab标签页切换图表显示问题的解决方法
2018/07/13 Javascript
vue弹窗组件的实现示例代码
2018/09/10 Javascript
js实现磁性吸附的示例
2020/10/26 Javascript
python实现socket端口重定向示例
2014/02/10 Python
python单例模式实例分析
2015/04/08 Python
浅析Python中的序列化存储的方法
2015/04/28 Python
用Python解决计数原理问题的方法
2016/08/04 Python
Python实现进程同步和通信的方法
2018/01/02 Python
Python中文件的读取和写入操作
2018/04/27 Python
Django model序列化为json的方法示例
2018/10/16 Python
Python从数据库读取大量数据批量写入文件的方法
2018/12/10 Python
python远程邮件控制电脑升级版
2019/05/23 Python
Windows下实现将Pascal VOC转化为TFRecords
2020/02/17 Python
精灵市场:Pixie Market
2019/06/18 全球购物
学校献爱心活动总结
2014/07/08 职场文书
中秋节国旗下演讲稿
2014/09/05 职场文书
幼儿园教师的自我评价范文
2014/09/17 职场文书
个人纪律作风整改措施思想汇报
2014/10/12 职场文书
党校学习个人总结
2015/02/15 职场文书
教师见习总结范文
2015/06/23 职场文书
李白经典诗之一:全文无一“月”字,却句句有月
2019/07/12 职场文书
Win11运行育碧游戏总是崩溃怎么办 win11玩育碧游戏出现性能崩溃的解决办法
2022/04/06 数码科技