最近一直学习Angular.js,在学习过程中也练习了很多的Demo,这里先贴一下表格+分页。
先上图看看最终结果:
不得不说Angular.js代码风格很受人欢迎,几十行代码清晰简洁的实现了上面的功能。
首先表格的数据源来自于, Server.js ?点击下载。通过get取数后分页显示。
1.表格是通过ng-repeat来展示的,代码如下:
< table class ="table table-bordered" >
< tr >
< th >index </ th >
< th ng-repeat ="(x,y) in items[0]" >{{ x }} </ th >
</ tr >
< tr ng-repeat ="x in items" >
< td >{{ $index + 1 }} </ td >
< td ng-bind ="x.Name" ></ td >
< td ng-bind ="x.City" ></ td >
< td ng-bind ="x.Country" ></ td >
</ tr >
</ table >
$index是repeat的默认参数。表格的列头是通过数据源(json)的第一行循环取的key值。当然要是Bootstrap要指定table的Class是table table-bordered。
2.分页是也是用ng-repeat,不得不说ng-repeat是常用指令。分页代码如下:
< nav >
< ul class ="pagination" >
< li >
< a ng-click ="Previous()" >
< span >上一页 </ span >
</ a >
</ li >
< li ng-repeat ="page in pageList" ng-class ="{active: isActivePage(page)}" >
< a ng-click ="selectPage(page)" >{{ page }} </ a >
</ li >
< li >
< a ng-click ="Next()" >
< span >下一页 </ span >
</ a >
</ li >
</ ul >
</ nav >
这里用了ng-click事件指令。还用到ng-class指令
ng-class="{active: isActivePage(page)}"
上面的代码是为了分页选中的样式。
这个表格加分页是假分页,从后端取一次数据,通过不同的分页显示json的筛选数据。
具体代码+注释:
1 <!-- 新 Bootstrap 核心 CSS 文件 -->
2 < link rel ="stylesheet" href ="http://apps.bdimg测试数据/libs/bootstrap/3.3.4/css/bootstrap.min.css" >
3 < style >
4 #divMain {
5 width : 500px ;
6 margin : 0 auto ;
7 margin-top : 100px ;
8 }
9 nav {
10 position : relative ;
11 width : 100% ;
12 height : 50px ;
13 }
14 .pagination {
15 right : 0px ;
16 position : absolute ;
17 top : -30px ;
18 }
19 nav li {
20 cursor : pointer ;
21 }
22 </ style >
23 < div id ="divMain" ng-app ="myApp" ng-controller ="myCtrl" >
24 < table class ="table table-bordered" >
25 < tr >
26 < th > index </ th >
27 < th ng-repeat ="(x,y) in items[0]" > {{ x }} </ th >
28 </ tr >
29 < tr ng-repeat ="x in items" >
30 < td > {{ $index + 1 }} </ td >
31 < td ng-bind ="x.Name" ></ td >
32 < td ng-bind ="x.City" ></ td >
33 < td ng-bind ="x.Country" ></ td >
34 </ tr >
35 </ table >
36 < nav >
37 < ul class ="pagination" >
38 < li >
39 < a ng-click ="Previous()" >
40 < span > 上一页 </ span >
41 </ a >
42 </ li >
43 < li ng-repeat ="page in pageList" ng-class ="{active: isActivePage(page)}" >
44 < a ng-click ="selectPage(page)" > {{ page }} </ a >
45 </ li >
46 < li >
47 < a ng-click ="Next()" >
48 < span > 下一页 </ span >
49 </ a >
50 </ li >
51 </ ul >
52 </ nav >
53 </ div >
54 < script src ="http://apps.bdimg测试数据/libs/angular.js/1.5.0-beta.0/angular.js" ></ script >
55 < script type ="text/javascript" >
56 var app = angular.module( " myApp " , []);
57 app.controller( " myCtrl " , function ($scope, $http) {
58 $http.get( " Service.js " ).then( function (response) {
59 // 数据源
60 $scope.data = response.data.records;
61 // 分页总数
62 $scope.pageSize = 5 ;
63 $scope.pages = Math.ceil($scope.data.length / $scope.pageSize); // 分页数
64 $scope.newPages = $scope.pages > 5 ? 5 : $scope.pages;
65 $scope.pageList = [];
66 $scope.selPage = 1 ;
67 // 设置表格数据源(分页)
68 $scope.setData = function () {
69 $scope.items = $scope.data.slice(($scope.pageSize * ($scope.selPage - 1 )), ($scope.selPage * $scope.pageSize)); // 通过当前页数筛选出表格当前显示数据
70 }
71 $scope.items = $scope.data.slice( 0 , $scope.pageSize);
72 // 分页要repeat的数组
73 for ( var i = 0 ; i < $scope.newPages; i ++ ) {
74 $scope.pageList.push(i + 1 );
75 }
76 // 打印当前选中页索引
77 $scope.selectPage = function (page) {
78 // 不能小于1大于最大
79 if (page < 1 || page > $scope.pages) return ;
80 // 最多显示分页数5
81 if (page > 2 ) {
82 // 因为只显示5个页数,大于2页开始分页转换
83 var newpageList = [];
84 for ( var i = (page - 3 ) ; i < ((page + 2 ) > $scope.pages ? $scope.pages : (page + 2 )) ; i ++ ) {
85 newpageList.push(i + 1 );
86 }
87 $scope.pageList = newpageList;
88 }
89 $scope.selPage = page;
90 $scope.setData();
91 $scope.isActivePage(page);
92 console.log( " 选择的页: " + page);
93 };
94 // 设置当前选中页样式
95 $scope.isActivePage = function (page) {
96 return $scope.selPage == page;
97 };
98 // 上一页
99 $scope.Previous = function () {
100 $scope.selectPage($scope.selPage - 1 );
101 }
102 // 下一页
103 $scope.Next = function () {
104 $scope.selectPage($scope.selPage + 1 );
105 };
106 });
107 })
108 </ script >
非原创,转自:http://HdhCmsTestcnblogs测试数据/cyclone77/p/5381278.html
查看更多关于angular.js 分页 Angular.js+Bootstrap实的详细内容...
声明:本文来自网络,不代表【好得很程序员自学网】立场,转载请注明出处:http://haodehen.cn/did222977