AngularJS 前臺(tái)分頁(yè)實(shí)現(xiàn)的示例代碼
考評(píng)員查詢,因?yàn)檎w的數(shù)據(jù)量比較小,所以我們可以將分頁(yè)放到前臺(tái)進(jìn)行處理。
其實(shí)分頁(yè)的原理也很簡(jiǎn)單,我們根據(jù)分頁(yè)選擇的頁(yè)碼數(shù)和每頁(yè)數(shù)據(jù)條數(shù)決定當(dāng)前顯示的是數(shù)組中的第多少項(xiàng)到多少項(xiàng),然后再構(gòu)造分頁(yè)的參數(shù)傳入已有的分頁(yè)指令。
// 初始化分頁(yè)參數(shù) $scope.pageParams = { size: $stateParams.size, // 每頁(yè)數(shù)據(jù)條數(shù) page: $stateParams.page, // 頁(yè)碼數(shù) last: undefined, // 是否首頁(yè) first: undefined, // 是否尾頁(yè) totalPages: undefined, // 總頁(yè)數(shù) totalElements: undefined, // 總數(shù)據(jù)條數(shù) numberOfElements: undefined // 當(dāng)前頁(yè)有幾條數(shù)據(jù) };
這是我們的分頁(yè)指令要的數(shù)據(jù),所以我們就是兩個(gè)任務(wù),第一,截取當(dāng)前頁(yè)應(yīng)該顯示的數(shù)據(jù),第二生成參數(shù)傳給分頁(yè)指令。
這是最后實(shí)現(xiàn)的CommonService
中的公共方法。
/** * 重新生成分頁(yè)參數(shù)與分頁(yè)數(shù)據(jù) * @param {每頁(yè)數(shù)據(jù)條數(shù)} size * @param {頁(yè)碼數(shù)} page * @param {全部數(shù)據(jù)} data * @param {Function} callback * callback (pageParams, currentPageData) * pageParams: 分頁(yè)的標(biāo)準(zhǔn) * currentPageData: 當(dāng)前頁(yè)的數(shù)據(jù) */ self.reloadPageParamsAndData = function(size, page, data, callback) { // 校驗(yàn)傳入的參數(shù) if (typeof size === 'undefined') { throw '未接收到每頁(yè)數(shù)據(jù)條數(shù)信息'; } if (typeof page === 'undefined') { throw '未接收到分頁(yè)信息'; } if (typeof data === 'undefined') { throw '未接收到數(shù)據(jù)信息'; } // 計(jì)算總頁(yè)數(shù)和總數(shù)據(jù)條數(shù) var totalPages = Math.ceil(data.length / size); var totalElements = data.length; // 計(jì)算當(dāng)前頁(yè)是否為首頁(yè) 是否為尾頁(yè) var first = page === 0 ? true : false; var last = page === totalPages - 1 ? true : false; // 根據(jù)分頁(yè)參數(shù)計(jì)算當(dāng)前頁(yè)應(yīng)該顯示的數(shù)據(jù) slice數(shù)組元素分割 var currentPageData = data.slice(0 + page * size, size + page * size); // 獲取當(dāng)前頁(yè)總共有多少條數(shù)據(jù) var numberOfElements = currentPageData.length; // 重新生成分頁(yè)參數(shù) var pageParams = { size: size, // 每頁(yè)數(shù)據(jù)條數(shù) page: page, // 頁(yè)碼數(shù) last: last, // 是否首頁(yè) first: first, // 是否尾頁(yè) totalPages: totalPages, // 總頁(yè)數(shù) totalElements: totalElements, // 總數(shù)據(jù)條數(shù) numberOfElements: numberOfElements // 當(dāng)前頁(yè)有幾條數(shù)據(jù) }; // 回調(diào) if (callback) { callback(pageParams, currentPageData); } };
獲取當(dāng)前頁(yè)數(shù)據(jù)
獲取當(dāng)前頁(yè)的數(shù)據(jù),我們需要知道每頁(yè)數(shù)據(jù)條數(shù),頁(yè)碼數(shù)即可對(duì)數(shù)據(jù)進(jìn)行分割。
var currentPageData = data.slice(0 + page * size, size + page * size);
對(duì)數(shù)據(jù)進(jìn)行分割,數(shù)據(jù)應(yīng)該是從0
到size
,加上page * size
就是之前的頁(yè)數(shù)中的數(shù)據(jù)量。
構(gòu)建分頁(yè)參數(shù)
// 計(jì)算總頁(yè)數(shù)和總數(shù)據(jù)條數(shù) var totalPages = Math.ceil(data.length / size); var totalElements = data.length; // 計(jì)算當(dāng)前頁(yè)是否為首頁(yè) 是否為尾頁(yè) var first = page === 0 ? true : false; var last = page === totalPages - 1 ? true : false; // 獲取當(dāng)前頁(yè)總共有多少條數(shù)據(jù) var numberOfElements = currentPageData.length;
數(shù)據(jù)總數(shù)除以每頁(yè)數(shù)據(jù)條數(shù)向上取整得到總頁(yè)數(shù)。
如果頁(yè)數(shù)為0
,則為首頁(yè);如果頁(yè)數(shù)為總頁(yè)數(shù)減1
,則為尾頁(yè)。
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- AngularJS與BootStrap模仿百度分頁(yè)的示例代碼
- angularjs實(shí)現(xiàn)分頁(yè)和搜索功能
- Angularjs自定義指令實(shí)現(xiàn)分頁(yè)插件(DEMO)
- angularjs+bootstrap實(shí)現(xiàn)自定義分頁(yè)的實(shí)例代碼
- AngularJS自定義指令詳解(有分頁(yè)插件代碼)
- Angularjs分頁(yè)查詢的實(shí)現(xiàn)
- angularjs實(shí)現(xiàn)的前端分頁(yè)控件示例
- 詳解angularjs結(jié)合pagination插件實(shí)現(xiàn)分頁(yè)功能
- angularjs使用directive實(shí)現(xiàn)分頁(yè)組件的示例
相關(guān)文章
angularJs復(fù)選框checkbox選中進(jìn)行ng-show顯示隱藏的方法
今天小編就為大家分享一篇angularJs復(fù)選框checkbox選中進(jìn)行ng-show顯示隱藏的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2018-10-10AngularJS基礎(chǔ)學(xué)習(xí)筆記之指令
指令(Directives)是所有AngularJS應(yīng)用最重要的部分。盡管AngularJS已經(jīng)提供了非常豐富的指令,但還是經(jīng)常需要?jiǎng)?chuàng)建應(yīng)用特定的指令。這篇教程會(huì)為你講述如何自定義指令,以及介紹如何在實(shí)際項(xiàng)目中使用。2015-05-05angular2中router路由跳轉(zhuǎn)navigate的使用與刷新頁(yè)面問題詳解
這篇文章主要給大家介紹了angular2中router路由跳轉(zhuǎn)navigate的使用與刷新頁(yè)面問題的相關(guān)資料,文中介紹的非常詳細(xì),對(duì)大家具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起看看吧。2017-05-05AngularJS 模塊詳解及簡(jiǎn)單實(shí)例
本文主要介紹AngularJS 模塊,這里幫大家整理了相關(guān)資料,詳細(xì)介紹了AngularJS的基礎(chǔ)知識(shí),有需要的朋友可以參考下2016-07-07Angular2學(xué)習(xí)筆記——詳解NgModule模塊
這篇文章主要介紹了Angular2學(xué)習(xí)筆記——詳解NgModule模塊,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2016-12-12AngularJs Creating Services詳解及示例代碼
本文主要介紹AngularJs Creating Services的知識(shí)資料,這里整理了詳細(xì)的資料及簡(jiǎn)單示例代碼,有需要的小伙伴可以參考下2016-09-09