详解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引用对象的方法
Jan 11 Javascript
Riot.js 快速的JavaScript单元测试框架
Nov 09 Javascript
jquery中通过过滤器获取表单元素的实现代码
Jul 05 Javascript
jquery checkbox 勾选的bug问题解决方案与分析
Nov 13 Javascript
JS获取Table中td值的方法
Mar 19 Javascript
js和jq使用submit方法无法提交表单的快速解决方法
May 17 Javascript
BootStrapTable服务器分页实例解析
Dec 20 Javascript
canvas绘制一个常用的emoji表情
Mar 30 Javascript
node实现定时发送邮件的示例代码
Aug 26 Javascript
Three.js入门之hello world以及如何绘制线
Sep 25 Javascript
vue项目base64字符串转图片的实现代码
Jul 13 Javascript
Vue axios 将传递的json数据转为form data的例子
Oct 29 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
超神学院:鹤熙已踏入神圣领域,实力不比凯莎弱
2020/03/02 国漫
php 301转向实现代码
2008/09/18 PHP
PHP程序开发范例学习之表单 获取文本框的值
2011/08/08 PHP
ThinkPHP采用GET方式获取中文参数查询无结果的解决方法
2014/06/26 PHP
避免Smarty与CSS语法冲突的方法
2015/03/02 PHP
php自定义排序uasort函数示例【二维数组按指定键值排序】
2019/06/19 PHP
laravel 判断查询数据库返回值的例子
2019/10/11 PHP
toString()一个会自动调用的方法
2010/02/08 Javascript
Jquery 切换不同图片示例代码
2013/12/05 Javascript
jQuery事件用法实例汇总
2014/08/29 Javascript
javascript实现十秒钟后注册按钮可点击的方法
2015/05/13 Javascript
Javascript基础_标记文字的实现方法
2016/06/14 Javascript
老生常谈JavaScript面向对象基础与this指向问题
2017/10/16 Javascript
javascript中new Array()和var arr=[]用法区别
2017/12/01 Javascript
Angular 数据请求的实现方法
2018/05/07 Javascript
Node.js 使用jade模板引擎的示例
2018/05/11 Javascript
详解vue-cli项目中怎么使用mock数据
2018/05/29 Javascript
小程序卡片切换效果组件wxCardSwiper的实现
2020/02/13 Javascript
Javascript如何实现扩充基本类型
2020/08/26 Javascript
python做量化投资系列之比特币初始配置
2018/01/23 Python
python爬虫中get和post方法介绍以及cookie作用
2018/02/08 Python
Python中数组,列表:冒号的灵活用法介绍(np数组,列表倒序)
2018/04/18 Python
python 删除指定时间间隔之前的文件实例
2018/04/24 Python
十个Python练手的实战项目,学会这些Python就基本没问题了(推荐)
2019/04/26 Python
利用python实现周期财务统计可视化
2019/08/25 Python
wxPython实现绘图小例子
2019/11/19 Python
Python3.7 读取音频根据文件名生成脚本的代码
2020/04/07 Python
基于pycharm 项目和项目文件命名规则的介绍
2021/01/15 Python
如何处理简单的PHP错误
2015/10/14 面试题
会计职业生涯规划书
2014/01/13 职场文书
市场营销毕业生自荐信范文
2014/04/01 职场文书
2015年实习生工作总结报告
2015/04/28 职场文书
党风廉洁教育心得体会
2016/01/20 职场文书
《丑小鸭》教学反思
2016/02/19 职场文书
python实现Thrift服务端的方法
2021/04/20 Python
Nginx部署vue项目和配置代理的问题解析
2021/08/04 Servers