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 相关文章推荐
某页码显示的helper 少量调整,另附js版
Sep 12 Javascript
有关js的变量作用域和this指针的讨论
Dec 16 Javascript
全面解析多种Bootstrap图片轮播效果
May 27 Javascript
js省市县三级联动效果实例
Apr 15 Javascript
Bootstrap表单布局样式代码
May 31 Javascript
mvc 、bootstrap 结合分布式图简单实现分页
Oct 10 Javascript
AngularJS实现动态编译添加到dom中的方法
Nov 04 Javascript
微信小程序开发教程之增加mixin扩展
Aug 09 Javascript
JS中的JSON对象的定义和取值实现代码
May 09 Javascript
浅谈微信JS-SDK 微信分享接口开发(介绍版)
Aug 15 Javascript
jQuery删除/清空指定元素的所有子节点实例代码
Jul 04 jQuery
Vue 的 v-model用法实例
Nov 23 Vue.js
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
php下删除一篇文章生成的多个静态页面
2010/08/08 PHP
PDO防注入原理分析以及使用PDO的注意事项总结
2014/10/23 PHP
NiftyCube——轻松实现圆角边框
2007/02/20 Javascript
JavaScript 对话框和状态栏使用说明
2009/10/25 Javascript
JS和JQUERY获取页面大小,滚动条位置,元素位置(示例代码)
2013/12/14 Javascript
javascript实现单击和双击并存的方法
2014/12/13 Javascript
JavaScript中string转换成number介绍
2014/12/31 Javascript
Jquery中Event对象属性小结
2015/02/27 Javascript
JavaScript的RequireJS库入门指南
2015/07/01 Javascript
JavaScript模拟鼠标右键菜单效果
2020/12/08 Javascript
Javascript 函数的四种调用模式
2016/11/05 Javascript
vue.js+Element实现表格里的增删改查
2017/01/18 Javascript
node.js部署之启动后台运行forever的方法
2018/05/23 Javascript
详解如何在Vue里建立长按指令
2018/08/20 Javascript
深入解析ES6中的promise
2018/11/08 Javascript
JS实现图片轮播效果实例详解【可自动和手动】
2019/04/04 Javascript
微信小程序系列之自定义顶部导航功能
2019/05/21 Javascript
原生javascript自定义input[type=radio]效果示例
2019/08/27 Javascript
Python去掉字符串中空格的方法
2014/03/11 Python
python实现学生信息管理系统
2020/04/05 Python
Python 常用模块 re 使用方法详解
2019/06/06 Python
在python中画正态分布图像的实例
2019/07/08 Python
python使用原始套接字发送二层包(链路层帧)的方法
2019/07/22 Python
Python爬虫:url中带字典列表参数的编码转换方法
2019/08/21 Python
pytorch获取模型某一层参数名及参数值方式
2019/12/30 Python
Python操控mysql批量插入数据的实现方法
2020/10/27 Python
CSS+jQuery实现的在线答题功能
2015/04/25 HTML / CSS
深入了解canvas在移动端绘制模糊的问题解决
2019/04/30 HTML / CSS
玩具反斗城美国官网:Toys"R"Us
2016/09/17 全球购物
重写子类方法时,抛出异常的书写注意事项
2015/10/17 面试题
播音主持女孩的自我评价分享
2013/11/20 职场文书
幼儿园母亲节活动方案
2014/03/10 职场文书
文秘求职信范文
2014/04/10 职场文书
OpenCV3.3+Python3.6实现图片高斯模糊
2021/05/18 Python
总结python多进程multiprocessing的相关知识
2021/06/29 Python
Go语言 详解net的tcp服务
2022/04/14 Golang