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 相关文章推荐
js 解决“options为空或不是对象”
Dec 22 Javascript
首页图片漂浮效果示例代码
Jun 05 Javascript
node.js适合游戏后台开发吗?
Sep 03 Javascript
JS获取数组最大值、最小值及长度的方法
Nov 24 Javascript
使用jQuery调用XML实现无刷新即时聊天
Aug 07 Javascript
JavaScript中ES6字符串扩展方法
Aug 26 Javascript
AngularJS实现星星等级评分功能
Sep 24 Javascript
BootStrap框架中的data-[ ]自定义属性理解(推荐)
Feb 14 Javascript
JavaScript组件开发之输入框加候选框
Mar 10 Javascript
如何理解jQuery中的ajaxSubmit方法
Mar 13 Javascript
vue中实现滚动加载更多的示例
Nov 08 Javascript
详解webpack 入门与解析
Apr 09 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
神族 PROTOSS 概述
2020/03/14 星际争霸
PR值查询 | PageRank 查询
2006/12/20 PHP
php getimagesize 上传图片的长度和宽度检测代码
2010/05/15 PHP
PHP简单装饰器模式实现与用法示例
2017/06/22 PHP
Windows上php5.6操作mongodb数据库示例【配置、连接、获取实例】
2019/02/13 PHP
Javascript 面向对象特性
2009/12/28 Javascript
jquery 简单的进度条实现代码
2010/03/11 Javascript
jquery及原生js获取select下拉框选中的值示例
2013/10/25 Javascript
EasyUi datagrid 实现表格分页
2015/02/10 Javascript
AngularJS中的表单简单入门
2016/07/28 Javascript
Node.js利用断言模块assert进行单元测试的方法
2017/09/28 Javascript
详解angularjs 学习之 scope作用域
2018/01/15 Javascript
jQuery中的类名选择器(.class)用法简单示例
2018/05/14 jQuery
快速解决vue在ios端下点击响应延时的问题
2018/08/27 Javascript
webpack配置proxyTable时pathRewrite无效的解决方法
2018/12/13 Javascript
Vue+Express实现登录状态权限验证的示例代码
2019/05/05 Javascript
vue实现多条件和模糊搜索功能
2019/05/28 Javascript
VUE路由动态加载实例代码讲解
2019/08/26 Javascript
解决Vue中 父子传值 数据丢失问题
2019/08/27 Javascript
Python实现将n个点均匀地分布在球面上的方法
2015/03/12 Python
Python实现时间序列可视化的方法
2019/08/06 Python
python实现BP神经网络回归预测模型
2019/08/09 Python
pytorch中的自定义反向传播,求导实例
2020/01/06 Python
关于pycharm 切换 python3.9 报错 ‘HTMLParser‘ object has no attribute ‘unescape‘ 的问题
2020/11/24 Python
用python制作个视频下载器
2021/02/01 Python
美国宠物美容和宠物用品购物网站:Cherrybrook
2018/12/07 全球购物
毕业证丢失证明
2014/01/15 职场文书
一份文言文检讨书
2014/09/13 职场文书
校运动会广播稿300字
2014/10/07 职场文书
2014年学校德育工作总结
2014/12/05 职场文书
2014预防青少年违法犯罪工作总结
2014/12/10 职场文书
先进员工事迹材料
2014/12/20 职场文书
举起手来观后感
2015/06/09 职场文书
《鲸》教学反思
2016/02/23 职场文书
OpenCV-Python实现轮廓的特征值
2021/06/09 Python
Win11右下角图标点了没反应怎么办?Win11点击右下角图标无反应解决方法汇总
2022/07/07 数码科技