基于Angularjs實(shí)現(xiàn)分頁功能
前言
學(xué)習(xí)任何一門語言前肯定是有業(yè)務(wù)需求來驅(qū)動你去學(xué)習(xí)它,當(dāng)然ng也不例外,在學(xué)習(xí)ng前我第一個(gè)想做的demo就是基于ng實(shí)現(xiàn)分頁,除去基本的計(jì)算思路外就是使用指令封裝成一個(gè)插件,在需要分頁的列表頁面內(nèi)直接引用。
插件
在封裝分頁插件時(shí)我實(shí)現(xiàn)了幾種方式總體都比較零散,最后找到了一個(gè)朋友(http://www.miaoyueyue.com/archives/813.html)封裝的插件,覺還不錯,讀了下他的源碼就直接在項(xiàng)目中使用了。
原理和使用說明
1、插件源碼主要基于angular directive來實(shí)現(xiàn)。
2、調(diào)用時(shí)關(guān)鍵地方是后臺請求處理函數(shù),也就是從后臺取數(shù)據(jù)。
3、插件有兩個(gè)關(guān)鍵參數(shù)currentPage、itemsPerPage,當(dāng)前頁碼和每頁的記錄數(shù)。
4、實(shí)現(xiàn)方法調(diào)用后我們需要根據(jù)每次點(diǎn)擊分頁插件頁碼時(shí)重新提交后臺來獲取相應(yīng)頁碼數(shù)據(jù)。 在調(diào)用的頁碼中我使用了$watch來監(jiān)控。 我初次使用時(shí)是把調(diào)用函數(shù)放在了插件的onchange中,結(jié)果發(fā)現(xiàn)每次都會觸發(fā)兩次后臺。這個(gè)地方需要注意。
5、我把請求后臺封裝成了Service層,然后在Controller里調(diào)用,也符合MVC思想。
效果圖
調(diào)用代碼
<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; }); } //配置分頁基本參數(shù) $scope.paginationConf = { currentPage: 1, itemsPerPage: 5 }; /*************************************************************** 當(dāng)頁碼和頁面記錄數(shù)發(fā)生變化時(shí)監(jiān)控后臺查詢 如果把currentPage和itemsPerPage分開監(jiān)控的話則會觸發(fā)兩次后臺事件。 ***************************************************************/ $scope.$watch('paginationConf.currentPage + paginationConf.itemsPerPage', GetAllEmployee); }]); //業(yè)務(wù)類 app.factory('BusinessService', ['$http', function ($http) { var list = function (postData) { return $http.post('/Employee/GetAllEmployee', postData); } return { list: function (postData) { return list(postData); } } }]); </script>
以上內(nèi)容是小編給大家介紹的基于Angularjs實(shí)現(xiàn)分頁功能的實(shí)例代碼,希望對大家有所幫助!
- angularjs表格分頁功能詳解
- angularjs實(shí)現(xiàn)的前端分頁控件示例
- ANGULARJS中使用JQUERY分頁控件
- AngularJS實(shí)現(xiàn)分頁顯示數(shù)據(jù)庫信息
- Angularjs分頁查詢的實(shí)現(xiàn)
- 學(xué)習(xí)Angularjs分頁指令
- AngularJS 與Bootstrap實(shí)現(xiàn)表格分頁實(shí)例代碼
- 詳解angularjs結(jié)合pagination插件實(shí)現(xiàn)分頁功能
- Angularjs 實(shí)現(xiàn)分頁功能及示例代碼
- AngularJs分頁插件使用詳解
相關(guān)文章
angularjs過濾器--filter與ng-repeat配合有奇效
本篇文章主要介紹了angularjs過濾器-filter與ng-repeat的相關(guān)知識。具有很好的參考價(jià)值。下面跟著小編一起來看下吧2017-04-04angular組件間通訊的實(shí)現(xiàn)方法示例
這篇文章主要給大家介紹了關(guān)于angular組件間通訊的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家學(xué)習(xí)或者使用angular組件具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧2020-05-05AngularJS基礎(chǔ)學(xué)習(xí)筆記之簡單介紹
AngularJS 不僅僅是一個(gè)類庫,而是提供了一個(gè)完整的框架。它避免了您和多個(gè)類庫交互,需要熟悉多套接口的繁瑣工作。它由Google Chrome的開發(fā)人員設(shè)計(jì),引領(lǐng)著下一代Web應(yīng)用開發(fā)。也許我們5年或10年后不會使用AngularJS,但是它的設(shè)計(jì)精髓將會一直被沿用。2015-05-05AngularJs點(diǎn)擊狀態(tài)值改變背景色的實(shí)例
下面小編就為大家分享一篇AngularJs點(diǎn)擊狀態(tài)值改變背景色的實(shí)例,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2017-12-12AngularJS+Bootstrap3多級導(dǎo)航菜單的實(shí)現(xiàn)代碼
將介紹如何用AngularJS構(gòu)建一個(gè)強(qiáng)大的web前端系統(tǒng)。文章介紹如何實(shí)現(xiàn)多限級導(dǎo)航菜單。本文圖文并茂給大家介紹的非常詳細(xì),感興趣的朋友參考下吧2017-08-08