详解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 返回布尔值Is()条件判断方法代码
May 14 Javascript
JavaScript参数个数可变的函数举例说明
Oct 10 Javascript
jQuery实现的倒计时效果实例小结
Apr 16 Javascript
聊一聊jQuery插件uploadify使用方法
Aug 24 Javascript
Javascript的动态增加类的实现方法
Oct 20 Javascript
layui文件上传实现代码
May 20 Javascript
解决webpack -p压缩打包react报语法错误的方法
Jul 03 Javascript
微信小程序云开发之云函数详解
May 16 Javascript
解决vue项目F5刷新mounted里的函数不执行问题
Nov 05 Javascript
JS实现扫码枪扫描二维码功能
Jan 03 Javascript
Node.JS如何实现JWT原理
Sep 18 Javascript
OpenLayer学习之自定义测量控件
Sep 28 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 读写json文件及修改json的方法
2018/03/07 PHP
PHP设计模式之 策略模式Strategy详解【对象行为型】
2020/05/01 PHP
javascript 避免闭包引发的问题
2009/03/17 Javascript
javascript和jquery修改a标签的href属性
2013/12/16 Javascript
jQuery的live()方法对hover事件的处理示例
2014/02/27 Javascript
Thinkphp模板没有解析直接原样输出的解决方法
2014/10/31 Javascript
使用CamanJS在Web页面上处理图像的技巧
2015/08/18 Javascript
jQuery实现的右下角广告窗体跟随效果示例
2016/09/16 Javascript
JavaScript实现图片轮播组件代码示例
2016/11/22 Javascript
vue.js之vue-cli脚手架的搭建详解
2017/05/05 Javascript
深入理解Nodejs Global 模块
2017/06/03 NodeJs
基于复选框demo(分享)
2017/09/27 Javascript
javascript高级模块化require.js的具体使用方法
2017/10/31 Javascript
用Node提供静态文件服务的方法
2018/07/06 Javascript
vue中如何实现后台管理系统的权限控制的方法示例
2018/09/19 Javascript
JavaScript中将值转换为字符串的五种方法总结
2019/06/06 Javascript
JS实现盒子拖拽效果
2020/02/06 Javascript
js生成1到100的随机数最简单的实现方法
2020/02/07 Javascript
Js实现粘贴上传图片的原理及示例
2020/12/09 Javascript
打开电脑上的QQ的python代码
2013/02/10 Python
Python Sql数据库增删改查操作简单封装
2016/04/18 Python
使用tqdm显示Python代码执行进度功能
2019/12/08 Python
纯CSS3实现移动端展开和收起效果的示例代码
2020/04/26 HTML / CSS
html5画布旋转效果示例
2014/01/27 HTML / CSS
美国鲜花递送:UrbanStems
2021/01/04 全球购物
为什么需要版本控制?
2013/08/08 面试题
成教毕业生自我鉴定
2013/10/23 职场文书
信息专业本科生个人的自我评价
2013/10/28 职场文书
中学生校园广播稿
2014/01/16 职场文书
高一新生军训感言
2014/03/02 职场文书
全国法院系统开展党的群众路线教育实践活动综述(全文)
2014/10/25 职场文书
西安导游词
2015/02/12 职场文书
谢师宴学生致辞
2015/07/27 职场文书
文明上网主题班会
2015/08/14 职场文书
2019年描写人生经典诗句大全
2019/07/08 职场文书
MySQL获取所有分类的前N条记录
2021/05/07 MySQL