基于Angularjs实现分页功能


Posted in Javascript onMay 30, 2016

前言

学习任何一门语言前肯定是有业务需求来驱动你去学习它,当然ng也不例外,在学习ng前我第一个想做的demo就是基于ng实现分页,除去基本的计算思路外就是使用指令封装成一个插件,在需要分页的列表页面内直接引用。

插件

在封装分页插件时我实现了几种方式总体都比较零散,最后找到了一个朋友(http://www.miaoyueyue.com/archives/813.html)封装的插件,觉还不错,读了下他的源码就直接在项目中使用了。

原理和使用说明

1、插件源码主要基于angular directive来实现。

2、调用时关键地方是后台请求处理函数,也就是从后台取数据。

3、插件有两个关键参数currentPage、itemsPerPage,当前页码和每页的记录数。

4、实现方法调用后我们需要根据每次点击分页插件页码时重新提交后台来获取相应页码数据。 在调用的页码中我使用了$watch来监控。 我初次使用时是把调用函数放在了插件的onchange中,结果发现每次都会触发两次后台。这个地方需要注意。

5、我把请求后台封装成了Service层,然后在Controller里调用,也符合MVC思想。

效果图

基于Angularjs实现分页功能

调用代码

<div ng-app="DemoApp" ng-controller="DemoController">
<table class="table table-striped">
<thead>
<tr>
<td>ID</td>
<td>FirstName</td>
<td>LastName</td>
<td>Status</td>
<td>Address</td>
</tr>
</thead>
<tbody>
<tr ng-repeat="emp in persons">
<td>{{emp.ID}}</td>
<td>{{emp.FirstName}}</td>
<td>{{emp.LastName}}</td>
<td>{{emp.Status}}</td>
<td>{{emp.Address}}</td>
</tr>
</tbody>
</table>
<tm-pagination conf="paginationConf"></tm-pagination>
</div>
<script type="text/javascript">
var app = angular.module('DemoApp', ['tm.pagination']);
app.controller('DemoController', ['$scope', 'BusinessService', function ($scope, BusinessService) {
var GetAllEmployee = function () {
var postData = {
pageIndex: $scope.paginationConf.currentPage,
pageSize: $scope.paginationConf.itemsPerPage
}
BusinessService.list(postData).success(function (response) {
$scope.paginationConf.totalItems = response.count;
$scope.persons = response.items;
});
}
//配置分页基本参数
$scope.paginationConf = {
currentPage: 1,
itemsPerPage: 5
};
/***************************************************************
当页码和页面记录数发生变化时监控后台查询
如果把currentPage和itemsPerPage分开监控的话则会触发两次后台事件。
***************************************************************/
$scope.$watch('paginationConf.currentPage + paginationConf.itemsPerPage', GetAllEmployee);
}]);
//业务类
app.factory('BusinessService', ['$http', function ($http) {
var list = function (postData) {
return $http.post('/Employee/GetAllEmployee', postData);
}
return {
list: function (postData) {
return list(postData);
}
}
}]);
</script>

以上内容是小编给大家介绍的基于Angularjs实现分页功能的实例代码,希望对大家有所帮助!

Javascript 相关文章推荐
(仅IE下有效)关于checkbox 三态
May 12 Javascript
jQuery 常见操作实现方式和常用函数方法总结
May 06 Javascript
js对象与打印对象分析比较
Apr 23 Javascript
图文详解Javascript中的上下文和作用域
Feb 15 Javascript
Vue.extend构造器的详解
Jul 17 Javascript
vue如何集成raphael.js中国地图的方法示例
Aug 15 Javascript
详解webpack2异步加载套路
Sep 14 Javascript
vue + any-touch实现一个iscroll 实现拖拽和滑动动画效果
Apr 08 Javascript
解决vue项目中页面调用数据 在数据加载完毕之前出现undefined问题
Nov 14 Javascript
vue实现购物车结算功能
Jun 18 Javascript
梳理一下vue中的生命周期
Dec 30 Vue.js
js面向对象编程OOP及函数式编程FP区别
Jul 07 Javascript
AngularJs实现分页功能不带省略号的代码
May 30 #Javascript
JS组件Bootstrap Select2使用方法解析
May 30 #Javascript
AngularJs表单验证实例详解
May 30 #Javascript
基于Bootstrap+jQuery.validate实现表单验证
May 30 #Javascript
jquery获取form表单input元素值的简单实例
May 30 #Javascript
实用又漂亮的BootstrapValidator表单验证插件
May 30 #Javascript
使用JQuery 加载页面时调用JS的实现方法
May 30 #Javascript
You might like
php对二维数组按指定键值key排序示例代码
2013/11/26 PHP
PHP魔术方法__GET、__SET使用实例
2014/11/25 PHP
php显示指定目录下子目录的方法
2015/03/20 PHP
php动态函数调用方法
2015/05/21 PHP
jQuery中文入门指南,翻译加实例,jQuery的起点教程
2007/02/09 Javascript
jQuery 前的按键判断代码
2010/03/19 Javascript
使用JS获取当前地理位置方法汇总
2014/12/18 Javascript
纯JavaScript基于notie.js插件实现消息提示特效
2016/01/18 Javascript
Bootstrap每天必学之警告框插件
2016/04/26 Javascript
JavaScript原生对象常用方法总结(推荐)
2016/05/13 Javascript
Boostrap实现的登录界面实例代码
2016/10/09 Javascript
JavaScript中关于iframe滚动条的去除和保留
2016/11/17 Javascript
socket.io学习教程之基本应用(二)
2017/04/29 Javascript
详解Nodejs之静态资源处理
2017/06/05 NodeJs
JS写XSS cookie stealer来窃取密码的步骤详解
2017/11/20 Javascript
Angular实现搜索框及价格上下限功能
2018/01/19 Javascript
浅析前端路由简介以及vue-router实现原理
2018/06/01 Javascript
解决bootstrap-select 动态加载数据不显示的问题
2018/08/10 Javascript
JavaScript基于遍历操作实现对象深拷贝功能示例
2019/03/05 Javascript
JS继承定义与使用方法简单示例
2020/02/19 Javascript
vue3.0生命周期的示例代码
2020/09/24 Javascript
微信小程序实现点击导航条切换页面
2020/11/19 Javascript
python实现斐波那契递归函数的方法
2014/09/08 Python
django请求返回不同的类型图片json,xml,html的实例
2018/05/22 Python
详解Python logging调用Logger.info方法的处理过程
2019/02/12 Python
Python实现图片裁剪的两种方式(Pillow和OpenCV)
2019/10/30 Python
Python如何使用bokeh包和geojson数据绘制地图
2020/03/21 Python
python环境搭建和pycharm的安装配置及汉化详细教程(零基础小白版)
2020/08/19 Python
使用bandit对目标python代码进行安全函数扫描的案例分析
2021/01/27 Python
基于HTML5 Canvas 实现弹出框效果
2017/06/05 HTML / CSS
HTML5中语义化 b 和 i 标签
2008/10/17 HTML / CSS
Spongelle官网:美国的创意护肤洗护品牌
2019/05/15 全球购物
上海世博会志愿者口号
2014/06/17 职场文书
公司委托书怎么写
2014/08/02 职场文书
红领巾心向党演讲稿
2014/09/10 职场文书
2015年企业团支部工作总结
2015/05/21 职场文书