摘要:分頁(yè)思路考評(píng)員查詢,因?yàn)檎w的數(shù)據(jù)量比較小,所以我們可以將分頁(yè)放到前臺(tái)進(jìn)行處理。公共方法這是最后實(shí)現(xiàn)的中的公共方法。對(duì)數(shù)據(jù)進(jìn)行分割,數(shù)據(jù)應(yīng)該是從到,加上就是之前的頁(yè)數(shù)中的數(shù)據(jù)量。
分頁(yè)思路
考評(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è)。
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://m.hztianpu.com/yun/107899.html
摘要:層過(guò)濾原來(lái)是先在層分頁(yè),然后在層進(jìn)行過(guò)濾,為了避免分頁(yè)引起的數(shù)據(jù)過(guò)濾錯(cuò)誤,所以決定將過(guò)濾器放到層使用,先過(guò)濾,后分頁(yè)。畢竟中的字符串還是可以讓他人去直接粘貼然后直接查詢到這個(gè)過(guò)濾器。 小數(shù)據(jù)量查詢思路 考評(píng)員綜合查詢,查詢條件有:區(qū)域、所在單位、從事專業(yè)、資格證名稱、有效期至。 showImg(https://segmentfault.com/img/bVbbF1P?w=1323&h=...
摘要:回調(diào)說(shuō)白了,就是把函數(shù)當(dāng)參數(shù)傳給另一根函數(shù),在另一個(gè)函數(shù)執(zhí)行時(shí)調(diào)用此函數(shù)例如,在下面這段代碼中,上面定義了兩個(gè)函數(shù)和,下面的方法請(qǐng)求成功執(zhí)行,失敗執(zhí)行異步異步的原理我看了網(wǎng)上的一些博客和例子,大都以定時(shí)任務(wù)為例子說(shuō)明,但具體的原理我還是不太 回調(diào) 說(shuō)白了,就是把函數(shù)當(dāng)參數(shù)傳給另一根函數(shù),在另一個(gè)函數(shù)執(zhí)行時(shí)調(diào)用此函數(shù)例如,在下面這段代碼中,上面定義了兩個(gè)函數(shù)success和error,下...
摘要:回調(diào)說(shuō)白了,就是把函數(shù)當(dāng)參數(shù)傳給另一根函數(shù),在另一個(gè)函數(shù)執(zhí)行時(shí)調(diào)用此函數(shù)例如,在下面這段代碼中,上面定義了兩個(gè)函數(shù)和,下面的方法請(qǐng)求成功執(zhí)行,失敗執(zhí)行異步異步的原理我看了網(wǎng)上的一些博客和例子,大都以定時(shí)任務(wù)為例子說(shuō)明,但具體的原理我還是不太 回調(diào) 說(shuō)白了,就是把函數(shù)當(dāng)參數(shù)傳給另一根函數(shù),在另一個(gè)函數(shù)執(zhí)行時(shí)調(diào)用此函數(shù)例如,在下面這段代碼中,上面定義了兩個(gè)函數(shù)success和error,下...
摘要:提供了完善的前后臺(tái)分頁(yè)功能,現(xiàn)將后臺(tái)分頁(yè)的學(xué)習(xí)和使用過(guò)程總結(jié)如下,方便日后參考。 DataTables提供了完善的前后臺(tái)分頁(yè)功能,現(xiàn)將后臺(tái)分頁(yè)的學(xué)習(xí)和使用過(guò)程總結(jié)如下,方便日后參考。 一、前臺(tái)頁(yè)面的配置 DataTables幾乎可以在不改變前臺(tái)代碼部分即可實(shí)現(xiàn)前臺(tái)分頁(yè)到后臺(tái)分頁(yè)的轉(zhuǎn)換,唯一需要做的就是在代碼中開(kāi)啟DataTables后臺(tái)分頁(yè)功能即可: serverSide : true...
摘要:后端主要使用的框架,數(shù)據(jù)庫(kù)采用。后臺(tái)管理登錄采用與后端進(jìn)行登陸狀態(tài)的確認(rèn)。本文首發(fā)于小站,這是一個(gè)積累和分享知識(shí)的個(gè)人博客 這篇文章擱置了很長(zhǎng)時(shí)間,最終決定還是把它寫(xiě)出來(lái),給剛開(kāi)始學(xué)習(xí)vue并且想用vue寫(xiě)個(gè)人博客的同學(xué)一個(gè)參考。因?yàn)楫?dāng)初我也是參考了其他人分享的知識(shí),從一個(gè)vue小白變成了一個(gè)入門(mén)級(jí)選手,并最終完成了這個(gè)個(gè)人博客的搭建工作,代碼已托管在Github-justJokee。...
閱讀 3481·2021-11-22 13:53
閱讀 3528·2021-10-11 11:11
閱讀 1003·2019-08-30 14:12
閱讀 1311·2019-08-29 17:16
閱讀 747·2019-08-29 16:45
閱讀 3456·2019-08-29 12:56
閱讀 741·2019-08-28 17:55
閱讀 2155·2019-08-26 13:24