angular.js分页代码的实例


Posted in Javascript onJuly 27, 2016

对于大多数web应用来说显示项目列表是一种很常见的任务。通常情况下,我们的数据会比较多,无法很好地显示在单个页面中。在这种情况下,我们需要把数据以页的方式来展示,同时带有转到上一页和下一页的功能。现在在学习angular,使用angularjs 分页,基于 directive 实现,样式使用的 bootstrap,直接在 html代码中加入 标签即可调用。

先来看下效果图

angular.js分页代码的实例

实例代码

app.directive('pagePagination', function(){
  return {
    restrict : 'E',
    template : '<div class="pagination-box"><ul class="pagination"><li ng-class="page.style" ng-repeat="page in pageList"><a href="{{ page.link }}">{{ page.name }}</a></li></ul><ul class="pagination" ng-if="pageList[0]"><li class="page-count disabled"><span>共 <b>{{ pageRecord }}</b> 条记录 / 共 <b>{{ pageCount }}</b> 页</span></li></ul></div>',
    replace : true,
    scope : {
      "pageId"      : "=",
      "pageRecord"    : "=",
      "pageSize"     : "=",
      "pageUrlTemplate"  : "="
    },
    controller : ['$scope', function($scope){
       
      $scope.getLink = function(pageId){
        return $scope.pageUrlTemplate.replace("{PAGE}", pageId);
      };
 
      $scope.getPageList = function(){
        var page = [];
        var firstPage = parseInt(( $scope.pageId - 1 ) / $scope._pageSize ) * $scope._pageSize + 1;
        page.push({
          name  : '首页',
          style  : $scope.pageId == 1 ? "disabled" : "",
          link  : $scope.getLink(1)
        });
        page.push({
          name  : '上一页',
          style  : $scope.pageId == 1 ? "disabled" : "",
          link  : $scope.getLink(1)
        });
        for( var pageId = firstPage; pageId < firstPage + 10; pageId ++){
          if( pageId >= 1 && pageId <= $scope.pageCount ){
            page.push({
              name  : pageId,
              link  : $scope.getLink(pageId),
              style  : pageId == $scope.pageId ? "active" : ""
            });
          }
        }
        page.push({
          name  : '下一页',
          style  : $scope.pageId == $scope.pageCount ? "disabled" : "",
          link  : $scope.getLink($scope.pageCount)
        });
        page.push({
          name  : '尾页',
          style  : $scope.pageId == $scope.pageCount ? "disabled" : "",
          link  : $scope.getLink($scope.pageCount)
        });
        return page;
      };
 
      $scope.pageInit = function(){
        if( !$scope.pageId || !$scope.pageRecord ){
          setTimeout(function(){
            $scope.$apply(function(){
              $scope.pageInit();
            });
          }, 10);
        }else{
          if( !!$scope.pageSize ){
            $scope._pageSize = parseInt($scope.pageSize);
          }else{
            $scope._pageSize = 10;
          }
          $scope.pageId    = parseInt($scope.pageId);
          $scope.pageCount  = parseInt(( $scope.pageRecord - 1 ) / $scope._pageSize ) + 1;
          if( $scope.pageId < 1 ){
            $scope.pageId = 1;
          }else if( $scope.pageId > $scope.pageCount ){
            $scope.pageId = $scope.pageCount;
          }
          $scope.pageLoad   = true;
          $scope.pageList   = $scope.getPageList();
        }
      };
       
      $scope.pageLoad = false;
      $scope.pageInit();
    }]
  }
});

调用代码:

<page-pagination
  page-id="pageId"
  page-record="recordCount"
  page-url-template="urlTemplate">
</page-pagination>

以上就是angular.js分页代码的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
JQuery 学习笔记 选择器之六
Jul 23 Javascript
快速解决jQuery与其他库冲突的方法介绍
Jan 02 Javascript
IE6浏览器中window.location.href无效的解决方法
Nov 20 Javascript
js实现从数组里随机获取元素
Jan 12 Javascript
jQuery封装的屏幕居中提示信息代码
Jun 08 Javascript
使用jQuery和ajax代替iframe的方法(详解)
Apr 12 jQuery
JS实现json的序列化和反序列化功能示例
Jun 13 Javascript
ES6中javascript实现函数绑定及类的事件绑定功能详解
Nov 08 Javascript
微信小程序绘制图片发送朋友圈
Jul 25 Javascript
详解js中的原型,原型对象,原型链
Jul 16 Javascript
JavaScript手写数组的常用函数总结
Nov 22 Javascript
JS setTimeout与setInterval的区别
Apr 20 Javascript
jQuery基于函数重载实现自定义Alert函数样式的方法
Jul 27 #Javascript
jquery动态遍历Json对象的属性和值的方法
Jul 27 #Javascript
移动端翻页插件dropload.js(支持Zepto和jQuery)
Jul 27 #Javascript
js中遍历对象的属性和值的方法
Jul 27 #Javascript
js中的关联数组与普通数组详解
Jul 27 #Javascript
20分钟打造属于你的Bootstrap站点
Jul 27 #Javascript
浅谈js多维数组和hash数组定义和使用
Jul 27 #Javascript
You might like
[企业公众号]升级到[企业微信]之后发送消息失败的解决方法
2017/06/30 PHP
关于PHP5.6+版本“No input file specified”问题的解决
2019/12/11 PHP
TP5框架实现签到功能的方法分析
2020/04/05 PHP
关于event.cancelBubble和event.stopPropagation()的区别介绍
2011/12/11 Javascript
js中使用replace方法完成某个字符的转换
2014/08/20 Javascript
jQuery/CSS3图片特效插件整理推荐
2014/12/07 Javascript
js自制图片放大镜功能
2017/01/24 Javascript
JavaScript高阶函数_动力节点Java学院整理
2017/06/28 Javascript
解决layer弹层遮罩挡住窗体的问题
2018/08/17 Javascript
node和vue实现商城用户地址模块
2018/12/05 Javascript
vue + any-touch实现一个iscroll 实现拖拽和滑动动画效果
2019/04/08 Javascript
jquery获取并修改触发事件的DOM元素示例【基于target 属性】
2019/10/10 jQuery
浅析微信小程序modal弹窗关闭默认会执行cancel问题
2019/10/14 Javascript
[01:31]DOTA2上海特级锦标赛 SECRET战队完整宣传片
2016/03/16 DOTA
[48:46]完美世界DOTA2联赛PWL S2 SZ vs FTD.C 第二场 11.19
2020/11/19 DOTA
跟老齐学Python之Python文档
2014/10/10 Python
Python入门学习之字符串与比较运算符
2015/10/12 Python
python高斯分布概率密度函数的使用详解
2019/07/10 Python
如何用Python破解wifi密码过程详解
2019/07/12 Python
Python 序列化和反序列化库 MarshMallow 的用法实例代码
2020/02/25 Python
Python tornado上传文件的功能
2020/03/26 Python
django 数据库返回queryset实现封装为字典
2020/05/19 Python
python中类与对象之间的关系详解
2020/12/16 Python
Staples英国官方网站:办公用品一站式采购
2017/10/06 全球购物
ASOS比利时:英国线上零售商及自有品牌
2018/07/29 全球购物
Beach Bunny Swimwear官网:设计师泳装和性感比基尼
2019/03/13 全球购物
如何利用cmp命令比较文件
2016/04/11 面试题
应届毕业生自我评价分享
2013/12/15 职场文书
放飞蜻蜓反思
2014/02/05 职场文书
优质服务口号
2014/06/11 职场文书
出国签证在职证明范本
2014/11/24 职场文书
2015年乡镇党务公开工作总结
2015/05/19 职场文书
公司致全体员工的感谢信
2019/06/24 职场文书
如何才能写好调研报告?
2019/07/03 职场文书
python之django路由和视图案例教程
2021/07/26 Python
python中的random模块和相关函数详解
2022/04/22 Python