成人无码视频,亚洲精品久久久久av无码,午夜精品久久久久久毛片,亚洲 中文字幕 日韩 无码

資訊專欄INFORMATION COLUMN

AngularJS 前臺(tái)分頁(yè)實(shí)現(xiàn)

YuboonaZhang / 3545人閱讀

摘要:分頁(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)該是從0size,加上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ān)文章

  • AngularJS 過(guò)濾器

    摘要:層過(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=...

    BlackFlagBin 評(píng)論0 收藏0
  • angularjs+springMvc學(xué)習(xí)筆記

    摘要:回調(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,下...

    dreamGong 評(píng)論0 收藏0
  • angularjs+springMvc學(xué)習(xí)筆記

    摘要:回調(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,下...

    rozbo 評(píng)論0 收藏0
  • DataTables后臺(tái)分頁(yè)的使用

    摘要:提供了完善的前后臺(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...

    ChristmasBoy 評(píng)論0 收藏0
  • 用vue搭建的個(gè)人博客介紹----mapblog小站

    摘要:后端主要使用的框架,數(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。...

    Ashin 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

閱讀需要支付1元查看
<