详解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 相关文章推荐
jscript之Open an Excel Spreadsheet
Jun 13 Javascript
JavaScript 在线压缩和格式化收藏
Jan 16 Javascript
JavaScript使用IEEE 标准进行二进制浮点运算产生莫名错误的解决方法
May 28 Javascript
Extjs407 getValue()和getRawValue()区别介绍
May 21 Javascript
提取字符串中年月日的函数代码
Nov 05 Javascript
jquery.ui.draggable中文文档(原文翻译)
Nov 15 Javascript
让JavaScript的Alert弹出框失效的方法禁止弹出警告框
Sep 03 Javascript
jQuery解决input元素的blur事件和其他非表单元素的click事件冲突问题
Aug 15 Javascript
vue的基本用法与常见指令
Aug 15 Javascript
jQuery获取所有父级元素及同级元素及子元素的方法(推荐)
Jan 21 jQuery
使用jQuery实现购物车
Oct 29 jQuery
jQuery实现增删改查
Dec 22 jQuery
小程序视频列表中视频的播放与停止的示例代码
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设计模式之观察者模式的应用详解
2013/05/21 PHP
getimagesize获取图片尺寸实例
2014/11/15 PHP
php面向对象中static静态属性与方法的内存位置分析
2015/02/08 PHP
php连接MSsql server的五种方法总结
2018/03/04 PHP
php传值和传引用的区别点总结
2019/11/19 PHP
javascript开发技术大全-第1章javascript概述
2011/07/03 Javascript
Js 时间间隔计算的函数(间隔天数)
2011/11/15 Javascript
JQuery判断子iframe何时加载完成解决方案
2013/08/20 Javascript
jquery实现弹出窗口效果的实例代码
2013/11/28 Javascript
非常酷炫的Bootstrap图片轮播动画
2016/05/27 Javascript
JS中使用变量保存arguments对象的方法
2016/06/03 Javascript
老生常谈onBlur事件与onfocus事件(js)
2016/07/09 Javascript
easyui form validate总是返回false的原因及解决方法
2016/11/07 Javascript
学习使用jQuery表单验证插件和日历插件
2017/02/13 Javascript
Vue组件实例间的直接访问实现代码
2017/08/20 Javascript
node内置调试方法总结
2018/02/22 Javascript
React 使用browserHistory项目访问404问题解决
2018/06/01 Javascript
使用Vue父子组件通信实现todolist的功能示例代码
2019/04/11 Javascript
[01:27]DOTA2电竞之夜 今夜共饮庆功酒
2014/08/02 DOTA
python删除文件示例分享
2014/01/28 Python
Python实现windows下模拟按键和鼠标点击的方法
2015/03/13 Python
python 调用win32pai 操作cmd的方法
2017/05/28 Python
Django实现表单验证
2018/09/08 Python
解决Pandas的DataFrame输出截断和省略的问题
2019/02/08 Python
Python的log日志功能及设置方法
2019/07/11 Python
使用python实现微信小程序自动签到功能
2020/04/27 Python
自定义Django_rest_framework_jwt登陆错误返回的解决
2020/10/18 Python
快速创建python 虚拟环境
2020/11/28 Python
python excel和yaml文件的读取封装
2021/01/12 Python
HTML5之语义标签介绍
2016/07/07 HTML / CSS
用canvas显示验证码的实现
2020/04/10 HTML / CSS
Elemental Herbology官网:英国美容品牌
2019/04/27 全球购物
新闻编辑自荐信
2013/11/03 职场文书
计算机专业职业规划
2014/02/28 职场文书
毛主席纪念堂观后感
2015/06/17 职场文书
微信小程序APP的生命周期及页面的生命周期
2022/04/19 Javascript