angular分页指令操作


Posted in Javascript onJanuary 09, 2017

目前的多个项目中都用到分页这个功能,为了提高可复用性,我特地分离出来写了个分页的指令。直接贴代码,详情如下:

index.html

<body id="sBill" ng-controller="map_ctrl">
  <table class="table table-striped" style="margin: 0px;border:1px solid #ccc;width:800px;min-height:200px;">      
   <tbody> 
     <tr ng-repeat="l in orderList"> 
       <td><input type="radio" name="id" ng-click="select(l.id)" value="{{l.id}}" /></td> 
       <td>{{l.time}}</td>         
     </tr> 
   </tbody> 
  </table> 
  <!-- paging datalist属性值(dataList)为要分页的原始数据--> 
  <rj-date datalist="dataList"></rj-date> 

 </body>

index.js

var app = angular.module("doSBill",[]);

app.controller("map_ctrl",function($scope,$http,$location,$timeout){ 
  // 原始数据
  $scope.dataList=[
  {'time':1},{'time':2},{'time':3},{'time':4},{'time':5},{'time':6},{'time':7},{'time':8},{'time':9},{'time':10},
  {'time':11},{'time':12},{'time':13},{'time':14},{'time':15},{'time':16},{'time':17},{'time':18},{'time':19},{'time':20},
  {'time':21},{'time':22},{'time':23},{'time':24},{'time':25},{'time':26},{'time':27},{'time':28},{'time':29},{'time':30},
  {'time':31}
  ];
  //$on:监听或接收数据;此处用于监听分页指令,修改的列表视图数据
  $scope.$on("orderList", function(e, orderList){
   $scope.orderList = orderList;
  });

});

 指令模板  page.html

<div>
 <p>
  <span>
   总记录数:<span class="rjAllNums" ng-bind="page.nums"></span>
   本页记录数:<span class="rjNowNums" ng-bind="page.nowNums"></span>
  </span>
  <button class="rjFirtPage" ng-click="jumpPage(1,dataList)">首页</button>
  <button class="rjPrePage" ng-click="jumpPage(page.now-1,dataList)">上一页</button>
  <span>
   <span class="rjNowPage" ng-bind="page.now"></span>/
   <span class="rjAllPage" ng-bind="page.pageCount"></span>
  </span>
  <button class="rjNextPage" ng-click="jumpPage(page.now+1,dataList)">下一页</button>
  <button class="rjLastPage" ng-click="jumpPage(page.pageCount,dataList)">尾页</button>
  到第 
  <input class="rjJumpInput" type="text" ng-model="page.jumpPage" name="rjPageName" value=""/>
   页
  <button class="rjJumpBtn" ng-click="jumpPage(page.jumpPage,dataList)">确定</button>
 </p>

</div>

指令定义page.js

app.directive('rjDate',function(){
    return {
      restrict: 'EA',  
      replace: false,
      scope : {dataList:'=datalist'},//设置scope.dataList与指令属性“datalist”值绑定,详情看指令scop作用域      
      templateUrl: 'pageDirective/template/page.html',  
      link: function(scope,elem,attr){

        var page={};//分页对象
        scope.page=page;
        scope.page.onePageNums=10; //每页记录数
        scope.page.nums=0;
        scope.page.now=1;
        scope.page.nowNums=0;
        scope.page.pageCount=1;
        scope.getPage=getPage; //设置获取页面的ng-click
        scope.page.orderList=[];

        getPage(1,scope.dataList);//初始化获取第一页数据

        scope.jumpPage=function(page,dataList){    
          if(!parseInt(page)){
           return null;
          }
          getPage(page,dataList);
         }
        function getPage(pageNow,dataList){//获取指定的页面     
           scope.page.nums=dataList.length; //设置总记录数
           scope.page.now=pageNow;//设置当前是第几页
           pagination();//设置当前有多少页面 生成一个页面数组
           scope.page.orderList=getOnePage(dataList);//获取一页的数据
           scope.$emit("orderList", scope.page.orderList);//$emit:子传父,传递event与data;此处用于给父controller传递数据orderList  
        }
        
        function getOnePage(arr){//获取一页的数据
          if(arr==null){           
           return null;
          } 
          var newarr=new Array();
          if(scope.page.now<1){
            scope.page.now=1;
          }
          if(scope.page.now>scope.page.pageCount){
            scope.page.now=scope.page.pageCount;
          }
          scope.page.nowNums=scope.page.onePageNums;
          var pagenow=scope.page.now; 

          var begin=(pagenow-1)*scope.page.onePageNums;                 
          var end=begin+scope.page.onePageNums;
          var lens=scope.page.nums;

          if(end>lens){
            end=lens;
            scope.page.nowNums=lens-begin;
          }
                
          for(begin;begin<end;begin++){
            newarr.push(arr[begin]);
          }
            return newarr;
        }
        function pagination(){//设置当前有多少页面 生成一个页面数组
          if(scope.page.nums<=scope.page.onePageNums){
            scope.page.pageCount=1;
          }else{
            if(scope.page.nums%scope.page.onePageNums==0){
              scope.page.pageCount=scope.page.nums/scope.page.onePageNums;
            }else{
              scope.page.pageCount=parseInt(scope.page.nums/scope.page.onePageNums)+1;
            }
          }
        }
        
      }
    }
  });

 效果如图所示:

angular分页指令操作

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
在IE和VB中支持png图片透明效果的实现方法(vb源码打包)
Apr 01 Javascript
Jquery 模板数据绑定插件的使用方法详解
Jul 08 Javascript
JS方法调用括号的问题探讨
Jan 24 Javascript
Javascript玩转继承(一)
May 08 Javascript
jQuery实现伸展与合拢panel的方法
Apr 30 Javascript
原生JavaScript实现瀑布流布局
Jun 28 Javascript
js原型链与继承解析(初体验)
May 09 Javascript
详解JavaScript中Hash Map映射结构的实现
May 21 Javascript
js实现随机点名小功能
Aug 17 Javascript
超详细的5个Shell脚本实例分享(值得收藏)
Aug 15 Javascript
用原生JS实现爱奇艺首页导航栏代码实例
Sep 19 Javascript
element-ui 文件上传修改文件名的方法示例
Nov 05 Javascript
jquery.zclip轻量级复制失效问题
Jan 08 #Javascript
JavaScript &amp; jQuery完美判断图片是否加载完毕
Jan 08 #Javascript
纯javaScript、jQuery实现个性化图片轮播【推荐】
Jan 08 #Javascript
js实现选项卡内容切换以及折叠和展开效果【推荐】
Jan 08 #Javascript
Javascript 实现计算器时间功能详解及实例(二)
Jan 08 #Javascript
JS 实现计算器详解及实例代码(一)
Jan 08 #Javascript
详解百度百科目录导航树小插件
Jan 08 #Javascript
You might like
仿AS3实现PHP 事件机制实现代码
2011/01/27 PHP
php 常用算法和时间复杂度
2013/07/01 PHP
windwos下使用php连接oracle数据库的过程分享
2014/05/26 PHP
Yii学习总结之安装配置
2015/02/22 PHP
Laravel实现自定义错误输出内容的方法
2016/10/10 PHP
[原创]PHP正则删除html代码中a标签并保留标签内容的方法
2017/05/23 PHP
基于laravel Request的所有方法详解
2019/09/29 PHP
关于恒等于(===)和非恒等于(!==)
2007/08/20 Javascript
JSQL  一个 web DB 的封装
2010/05/05 Javascript
JQuery 选择和过滤方法代码总结
2010/11/19 Javascript
IE下使用cloneNode注意事项分享
2012/11/22 Javascript
jQuery getJSON()+.ashx 实现分页(改进版)
2013/03/28 Javascript
Jquery右下角抖动、浮动 实例代码(兼容ie6、FF)
2013/08/15 Javascript
Javascript倒计时页面跳转实例小结
2013/09/11 Javascript
js验证输入是否为手机号码或电话号码示例
2013/12/30 Javascript
解决node-webkit 不支持html5播放mp4视频的方法
2015/03/11 Javascript
AngularJS 遇到的小坑与技巧小结
2016/06/07 Javascript
基于jQuery的ajax方法封装
2016/07/14 Javascript
jQuery属性选择器用法示例
2016/09/09 Javascript
JS代码实现百度地图 画圆 删除标注
2016/10/12 Javascript
js Date()日期函数浏览器兼容问题解决方法
2017/09/12 Javascript
详解React+Koa实现服务端渲染(SSR)
2018/05/23 Javascript
详解mpvue小程序中怎么引入iconfont字体图标
2018/10/01 Javascript
微信小程序实现留言板(Storage)
2018/11/02 Javascript
JavaScript实现秒杀时钟倒计时
2019/09/29 Javascript
[00:32]2018DOTA2亚洲邀请赛Liquid出场
2018/04/03 DOTA
[38:27]完美世界DOTA2联赛PWL S2 Forest vs FTD.C 第二场 11.26
2020/11/30 DOTA
使用python实现省市三级菜单效果
2016/01/20 Python
详解Python中的array数组模块相关使用
2016/07/05 Python
使用python实现简单五子棋游戏
2019/06/18 Python
ProBikeKit美国官网:自行车套件,跑步和铁人三项套件
2016/10/13 全球购物
Harrods美国:英国最大的百货公司
2018/11/04 全球购物
Fanatics英国官网:美国体育电商
2018/11/06 全球购物
英文商务邀请信
2014/01/22 职场文书
酒店行政人事部经理职务说明书
2014/02/26 职场文书
2014教师教育实践活动对照检查材料思想汇报
2014/09/21 职场文书