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 相关文章推荐
jquery validate.js表单验证的基本用法入门
May 13 Javascript
jquery 元素控制(追加元素/追加内容)介绍及应用
Apr 21 Javascript
JavaScript输入邮箱自动提示实例代码
Jan 13 Javascript
angularjs基础教程
Dec 25 Javascript
5个数组Array方法: indexOf、filter、forEach、map、reduce使用实例
Jan 29 Javascript
jQuery判断元素上是否绑定了指定事件的方法
Mar 17 Javascript
浅谈javascript中基本包装类型
Jun 03 Javascript
微信企业号开发之微信考勤Cookies的使用
Sep 11 Javascript
vue实现提示保存后退出的方法
Mar 15 Javascript
解决jquery有正确返回值但不执行success函数的问题
Aug 20 jQuery
vue项目每30秒刷新1次接口的实现方法
Dec 04 Javascript
React组件对子组件children进行加强的方法
Jun 23 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
无线电波是什么?它是怎样传输的?
2021/03/01 无线电
smarty模板引擎中内建函数if、elseif和else的使用方法
2015/01/22 PHP
PHP请求远程地址设置超时时间的解决方法
2016/10/29 PHP
详细解读php的命名空间(一)
2018/02/21 PHP
php框架CodeIgniter使用redis的方法分析
2018/04/13 PHP
php json转换相关知识(小结)
2018/12/21 PHP
javascript Zifa FormValid 0.1表单验证 代码打包下载
2007/06/08 Javascript
javascript 二分法(数组array)
2010/04/24 Javascript
jquery中动态效果小结
2010/12/16 Javascript
Jquery getJSON方法详细分析
2013/12/26 Javascript
laytpl 精致巧妙的JavaScript模板引擎
2014/08/29 Javascript
详细介绍jQuery.outerWidth() 函数具体用法
2015/07/20 Javascript
innerHTML中标签可以换行的方法汇总
2015/08/14 Javascript
ES2015 Symbol 一种绝不重复的值
2016/12/25 Javascript
React 组件转 Vue 组件的命令写法
2018/02/28 Javascript
vue.js动画中的js钩子函数的实现
2018/07/06 Javascript
使用JavaScript破解web
2018/09/28 Javascript
Vue.Draggable拖拽功能的配置使用方法
2020/07/29 Javascript
js getBoundingClientRect使用方法详解
2019/07/17 Javascript
Vue的状态管理vuex使用方法详解
2020/02/05 Javascript
keep-alive不能缓存多层级路由菜单问题解决
2020/03/10 Javascript
详解Typescript 内置的模块导入兼容方式
2020/05/31 Javascript
Jquery $.map使用方法实例详解
2020/09/01 jQuery
用Python制作简单的朴素基数估计器的教程
2015/04/01 Python
Python使用遗传算法解决最大流问题
2018/01/29 Python
Python使用Selenium模块实现模拟浏览器抓取淘宝商品美食信息功能示例
2018/07/18 Python
Django中使用 Closure Table 储存无限分级数据
2019/06/06 Python
python做接口测试的必要性
2019/11/20 Python
解决Python中回文数和质数的问题
2019/11/24 Python
通过实例了解python__slots__使用方法
2020/09/14 Python
探究 canvas 绘图中撤销(undo)功能的实现方式详解
2018/05/17 HTML / CSS
法国包包和行李箱销售网站:Bagage24.fr
2020/03/24 全球购物
应届生会计电算化求职信
2013/10/03 职场文书
巾帼文明岗申报材料
2014/05/01 职场文书
团日活动总结怎么写
2014/06/25 职场文书
python数字图像处理之图像自动阈值分割示例
2022/06/28 Python