Angular.js与Bootstrap相结合实现表格分页代码


Posted in Javascript onApril 12, 2016

先给大家简单介绍angular.js和bootstrap基本概念。

AngularJS 是一个 JavaScript 框架。它可通过 <script> 标签添加到 HTML 页面。

AngularJS 通过 指令 扩展了 HTML,且通过 表达式 绑定数据到 HTML。

Bootstrap,来自 Twitter,是目前最受欢迎的前端框架。Bootstrap 是基于 HTML、CSS、JAVASCRIPT 的,它简洁灵活,使得 Web 开发更加快捷。

最近一直学习Angular.js,在学习过程中也练习了很多的Demo,这里先贴一下表格+分页。

先上图看看最终结果:

Angular.js与Bootstrap相结合实现表格分页代码

不得不说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的筛选数据。

具体代码+注释:

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>表格</title> 
</head>
<body>
<!-- 新 Bootstrap 核心 CSS 文件 -->
<link rel="stylesheet" href="http://apps.bdimg.com/libs/bootstrap/3.3.4/css/bootstrap.min.css">
<style>
#divMain {
width: 500px;
margin: 0 auto;
margin-top: 100px;
}
nav {
position: relative;
width:100%;
height: 50px;
}
.pagination {
right: 0px;
position: absolute;
top: -30px;
}
nav li {
cursor: pointer;
}
</style>
<div id="divMain" ng-app="myApp" ng-controller="myCtrl">
<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>
<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>
</div>
<script src="http://apps.bdimg.com/libs/angular.js/1.5.0-beta.0/angular.js"></script>
<script>
var app = angular.module("myApp", []);
app.controller("myCtrl", function ($scope, $http) {
$http.get("Service.js").then(function (response) {
//数据源
$scope.data = response.data.records;
//分页总数
$scope.pageSize = 5;
$scope.pages = Math.ceil($scope.data.length / $scope.pageSize); //分页数
$scope.newPages = $scope.pages > 5 ? 5 : $scope.pages;
$scope.pageList = [];
$scope.selPage = 1;
//设置表格数据源(分页)
$scope.setData = function () {
$scope.items = $scope.data.slice(($scope.pageSize * ($scope.selPage - 1)), ($scope.selPage * $scope.pageSize));//通过当前页数筛选出表格当前显示数据
}
$scope.items = $scope.data.slice(0, $scope.pageSize);
//分页要repeat的数组
for (var i = 0; i < $scope.newPages; i++) {
$scope.pageList.push(i + 1);
}
//打印当前选中页索引
$scope.selectPage = function (page) {
//不能小于1大于最大
if (page < 1 || page > $scope.pages) return;
//最多显示分页数5
if (page > 2) {
//因为只显示5个页数,大于2页开始分页转换
var newpageList = [];
for (var i = (page - 3) ; i < ((page + 2) > $scope.pages ? $scope.pages : (page + 2)) ; i++) {
newpageList.push(i + 1);
}
$scope.pageList = newpageList;
}
$scope.selPage = page;
$scope.setData();
$scope.isActivePage(page);
console.log("选择的页:" + page);
};
//设置当前选中页样式
$scope.isActivePage = function (page) {
return $scope.selPage == page;
};
//上一页
$scope.Previous = function () {
$scope.selectPage($scope.selPage - 1);
}
//下一页
$scope.Next = function () {
$scope.selectPage($scope.selPage + 1);
};
});
})
</script>
</body>
</html>

关于Angular.js与Bootstrap相结合实现表格分页代码小编就给大家介绍这么多,希望对大家有所帮助!

Javascript 相关文章推荐
js捕获鼠标滚轮事件代码
Dec 16 Javascript
DOM基础教程之使用DOM控制表格
Jan 20 Javascript
最流行的Node.js精简型和全栈型开发框架介绍
Feb 26 Javascript
零基础轻松学JavaScript闭包
Dec 30 Javascript
vue中如何引入jQuery和Bootstrap
Apr 10 jQuery
详解Vue项目编译后部署在非网站根目录的解决方案
Apr 26 Javascript
jQuery实现表单动态加减、ajax表单提交功能
Jun 08 jQuery
JavaScript事件冒泡与事件捕获实例分析
Aug 01 Javascript
解决vue中修改export default中脚本报一大堆错的问题
Aug 27 Javascript
简单了解vue中父子组件如何相互传递值(基础向)
Jul 12 Javascript
开源一个微信小程序仪表盘组件过程解析
Jul 30 Javascript
浅谈vue中get请求解决传输数据是数组格式的问题
Aug 03 Javascript
JS代码防止SQL注入的方法(超简单)
Apr 12 #Javascript
zTree插件下拉树使用入门教程
Apr 11 #Javascript
对jquery的ajax进行二次封装以及ajax缓存代理组件:AjaxCache详解
Apr 11 #Javascript
js创建jsonArray传输至后台及后台全面解析
Apr 11 #Javascript
javascript HTML5 Canvas实现圆盘抽奖功能
Apr 11 #Javascript
详解JavaScript的另类写法
Apr 11 #Javascript
详解jQuery中的empty、remove和detach
Apr 11 #Javascript
You might like
雄兵连:天使彦天使彦为爱折翼,彦和炙心同时念动的誓言!
2020/03/02 国漫
一步一步学习PHP(6) 面向对象
2010/02/16 PHP
php修改NetBeans默认字体的大小
2013/07/02 PHP
php实现的验证码文件类实例
2015/06/18 PHP
php实现可逆加密的方法
2015/08/11 PHP
JQery jstree 大数据量问题解决方法
2010/03/09 Javascript
基于jQuery的仿flash的广告轮播代码
2010/11/04 Javascript
仿百度输入框智能提示的js代码
2013/08/22 Javascript
jQuery使用slideUp方法实现控制元素缓慢收起
2015/03/27 Javascript
分享自己用JS做的扫雷小游戏
2016/02/17 Javascript
深入理解js中this的用法
2016/05/28 Javascript
利用JavaScript判断浏览器类型及版本
2016/08/23 Javascript
vue实现列表的添加点击
2016/12/29 Javascript
nodejs中函数的调用实例详解
2018/10/31 NodeJs
jQuery操作attr、prop、val()/text()/html()、class属性
2019/05/23 jQuery
layui的表单提交以及验证和修改弹框的实例
2019/09/09 Javascript
vue中使用极验验证码的方法(附demo)
2019/12/04 Javascript
vue-cli3项目配置eslint代码规范的完整步骤
2020/09/10 Javascript
Python中对象迭代与反迭代的技巧总结
2016/09/17 Python
python中matplotlib实现最小二乘法拟合的过程详解
2017/07/11 Python
python实现二叉树的遍历
2017/12/11 Python
Python subprocess模块功能与常见用法实例详解
2018/06/28 Python
对Python中Iterator和Iterable的区别详解
2018/10/18 Python
python 提取key 为中文的json 串方法
2018/12/31 Python
python使用pygame模块实现坦克大战游戏
2020/03/25 Python
将Pytorch模型从CPU转换成GPU的实现方法
2019/08/19 Python
Django 404、500页面全局配置知识点详解
2020/03/10 Python
Python 炫技操作之合并字典的七种方法
2020/04/10 Python
JupyterNotebook 输出窗口的显示效果调整方法
2020/04/13 Python
Python下使用Trackbar实现绘图板
2020/10/27 Python
Ralph Lauren英国官方网站:Ralph Lauren UK
2018/04/03 全球购物
工程负责人任命书
2014/06/06 职场文书
入党积极分子批评与自我批评思想汇报
2014/09/14 职场文书
幼儿园大班教育随笔
2015/08/14 职场文书
Mysql数据库按时间点恢复实战记录
2021/06/30 MySQL
Mysql数据库事务的脏读幻读及不可重复读详解
2022/05/30 MySQL