AngularJS 前臺分頁實現(xiàn)的示例代碼
考評員查詢,因為整體的數(shù)據(jù)量比較小,所以我們可以將分頁放到前臺進行處理。
其實分頁的原理也很簡單,我們根據(jù)分頁選擇的頁碼數(shù)和每頁數(shù)據(jù)條數(shù)決定當前顯示的是數(shù)組中的第多少項到多少項,然后再構(gòu)造分頁的參數(shù)傳入已有的分頁指令。
// 初始化分頁參數(shù) $scope.pageParams = { size: $stateParams.size, // 每頁數(shù)據(jù)條數(shù) page: $stateParams.page, // 頁碼數(shù) last: undefined, // 是否首頁 first: undefined, // 是否尾頁 totalPages: undefined, // 總頁數(shù) totalElements: undefined, // 總數(shù)據(jù)條數(shù) numberOfElements: undefined // 當前頁有幾條數(shù)據(jù) };
這是我們的分頁指令要的數(shù)據(jù),所以我們就是兩個任務,第一,截取當前頁應該顯示的數(shù)據(jù),第二生成參數(shù)傳給分頁指令。
這是最后實現(xiàn)的CommonService
中的公共方法。
/** * 重新生成分頁參數(shù)與分頁數(shù)據(jù) * @param {每頁數(shù)據(jù)條數(shù)} size * @param {頁碼數(shù)} page * @param {全部數(shù)據(jù)} data * @param {Function} callback * callback (pageParams, currentPageData) * pageParams: 分頁的標準 * currentPageData: 當前頁的數(shù)據(jù) */ self.reloadPageParamsAndData = function(size, page, data, callback) { // 校驗傳入的參數(shù) if (typeof size === 'undefined') { throw '未接收到每頁數(shù)據(jù)條數(shù)信息'; } if (typeof page === 'undefined') { throw '未接收到分頁信息'; } if (typeof data === 'undefined') { throw '未接收到數(shù)據(jù)信息'; } // 計算總頁數(shù)和總數(shù)據(jù)條數(shù) var totalPages = Math.ceil(data.length / size); var totalElements = data.length; // 計算當前頁是否為首頁 是否為尾頁 var first = page === 0 ? true : false; var last = page === totalPages - 1 ? true : false; // 根據(jù)分頁參數(shù)計算當前頁應該顯示的數(shù)據(jù) slice數(shù)組元素分割 var currentPageData = data.slice(0 + page * size, size + page * size); // 獲取當前頁總共有多少條數(shù)據(jù) var numberOfElements = currentPageData.length; // 重新生成分頁參數(shù) var pageParams = { size: size, // 每頁數(shù)據(jù)條數(shù) page: page, // 頁碼數(shù) last: last, // 是否首頁 first: first, // 是否尾頁 totalPages: totalPages, // 總頁數(shù) totalElements: totalElements, // 總數(shù)據(jù)條數(shù) numberOfElements: numberOfElements // 當前頁有幾條數(shù)據(jù) }; // 回調(diào) if (callback) { callback(pageParams, currentPageData); } };
獲取當前頁數(shù)據(jù)
獲取當前頁的數(shù)據(jù),我們需要知道每頁數(shù)據(jù)條數(shù),頁碼數(shù)即可對數(shù)據(jù)進行分割。
var currentPageData = data.slice(0 + page * size, size + page * size);
對數(shù)據(jù)進行分割,數(shù)據(jù)應該是從0
到size
,加上page * size
就是之前的頁數(shù)中的數(shù)據(jù)量。
構(gòu)建分頁參數(shù)
// 計算總頁數(shù)和總數(shù)據(jù)條數(shù) var totalPages = Math.ceil(data.length / size); var totalElements = data.length; // 計算當前頁是否為首頁 是否為尾頁 var first = page === 0 ? true : false; var last = page === totalPages - 1 ? true : false; // 獲取當前頁總共有多少條數(shù)據(jù) var numberOfElements = currentPageData.length;
數(shù)據(jù)總數(shù)除以每頁數(shù)據(jù)條數(shù)向上取整得到總頁數(shù)。
如果頁數(shù)為0
,則為首頁;如果頁數(shù)為總頁數(shù)減1
,則為尾頁。
以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
相關文章
angularJs復選框checkbox選中進行ng-show顯示隱藏的方法
今天小編就為大家分享一篇angularJs復選框checkbox選中進行ng-show顯示隱藏的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-10-10angular2中router路由跳轉(zhuǎn)navigate的使用與刷新頁面問題詳解
這篇文章主要給大家介紹了angular2中router路由跳轉(zhuǎn)navigate的使用與刷新頁面問題的相關資料,文中介紹的非常詳細,對大家具有一定的參考學習價值,需要的朋友們下面來一起看看吧。2017-05-05AngularJs Creating Services詳解及示例代碼
本文主要介紹AngularJs Creating Services的知識資料,這里整理了詳細的資料及簡單示例代碼,有需要的小伙伴可以參考下2016-09-09