成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

AngularJS 前臺分頁實現(xiàn)

YuboonaZhang / 3505人閱讀

摘要:分頁思路考評員查詢,因為整體的數(shù)據(jù)量比較小,所以我們可以將分頁放到前臺進(jìn)行處理。公共方法這是最后實現(xiàn)的中的公共方法。對數(shù)據(jù)進(jìn)行分割,數(shù)據(jù)應(yīng)該是從到,加上就是之前的頁數(shù)中的數(shù)據(jù)量。

分頁思路

考評員查詢,因為整體的數(shù)據(jù)量比較小,所以我們可以將分頁放到前臺進(jìn)行處理。

其實分頁的原理也很簡單,我們根據(jù)分頁選擇的頁碼數(shù)和每頁數(shù)據(jù)條數(shù)決定當(dāng)前顯示的是數(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   // 當(dāng)前頁有幾條數(shù)據(jù)
};

這是我們的分頁指令要的數(shù)據(jù),所以我們就是兩個任務(wù),第一,截取當(dāng)前頁應(yīng)該顯示的數(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: 分頁的標(biāo)準(zhǔn)
 * currentPageData: 當(dāng)前頁的數(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;
    // 計算當(dāng)前頁是否為首頁 是否為尾頁
    var first = page === 0 ? true : false;
    var last  = page === totalPages - 1 ? true : false;
    // 根據(jù)分頁參數(shù)計算當(dāng)前頁應(yīng)該顯示的數(shù)據(jù) slice數(shù)組元素分割
    var currentPageData = data.slice(0 + page * size, size + page * size);
    // 獲取當(dāng)前頁總共有多少條數(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   // 當(dāng)前頁有幾條數(shù)據(jù)
    };

    // 回調(diào)
    if (callback) {
        callback(pageParams, currentPageData);
    }
};
獲取當(dāng)前頁數(shù)據(jù)

獲取當(dāng)前頁的數(shù)據(jù),我們需要知道每頁數(shù)據(jù)條數(shù),頁碼數(shù)即可對數(shù)據(jù)進(jìn)行分割。

var currentPageData = data.slice(0 + page * size, size + page * size);

對數(shù)據(jù)進(jìn)行分割,數(shù)據(jù)應(yīng)該是從0size,加上page * size就是之前的頁數(shù)中的數(shù)據(jù)量。

構(gòu)建分頁參數(shù)
// 計算總頁數(shù)和總數(shù)據(jù)條數(shù)
var totalPages    = Math.ceil(data.length / size);
var totalElements = data.length;
// 計算當(dāng)前頁是否為首頁 是否為尾頁
var first = page === 0 ? true : false;
var last  = page === totalPages - 1 ? true : false;
// 獲取當(dāng)前頁總共有多少條數(shù)據(jù)
var numberOfElements = currentPageData.length;

數(shù)據(jù)總數(shù)除以每頁數(shù)據(jù)條數(shù)向上取整得到總頁數(shù)。

如果頁數(shù)為0,則為首頁;如果頁數(shù)為總頁數(shù)減1,則為尾頁。

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/107899.html

相關(guān)文章

  • AngularJS 過濾器

    摘要:層過濾原來是先在層分頁,然后在層進(jìn)行過濾,為了避免分頁引起的數(shù)據(jù)過濾錯誤,所以決定將過濾器放到層使用,先過濾,后分頁。畢竟中的字符串還是可以讓他人去直接粘貼然后直接查詢到這個過濾器。 小數(shù)據(jù)量查詢思路 考評員綜合查詢,查詢條件有:區(qū)域、所在單位、從事專業(yè)、資格證名稱、有效期至。 showImg(https://segmentfault.com/img/bVbbF1P?w=1323&h=...

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

    摘要:回調(diào)說白了,就是把函數(shù)當(dāng)參數(shù)傳給另一根函數(shù),在另一個函數(shù)執(zhí)行時調(diào)用此函數(shù)例如,在下面這段代碼中,上面定義了兩個函數(shù)和,下面的方法請求成功執(zhí)行,失敗執(zhí)行異步異步的原理我看了網(wǎng)上的一些博客和例子,大都以定時任務(wù)為例子說明,但具體的原理我還是不太 回調(diào) 說白了,就是把函數(shù)當(dāng)參數(shù)傳給另一根函數(shù),在另一個函數(shù)執(zhí)行時調(diào)用此函數(shù)例如,在下面這段代碼中,上面定義了兩個函數(shù)success和error,下...

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

    摘要:回調(diào)說白了,就是把函數(shù)當(dāng)參數(shù)傳給另一根函數(shù),在另一個函數(shù)執(zhí)行時調(diào)用此函數(shù)例如,在下面這段代碼中,上面定義了兩個函數(shù)和,下面的方法請求成功執(zhí)行,失敗執(zhí)行異步異步的原理我看了網(wǎng)上的一些博客和例子,大都以定時任務(wù)為例子說明,但具體的原理我還是不太 回調(diào) 說白了,就是把函數(shù)當(dāng)參數(shù)傳給另一根函數(shù),在另一個函數(shù)執(zhí)行時調(diào)用此函數(shù)例如,在下面這段代碼中,上面定義了兩個函數(shù)success和error,下...

    rozbo 評論0 收藏0
  • DataTables后臺分頁的使用

    摘要:提供了完善的前后臺分頁功能,現(xiàn)將后臺分頁的學(xué)習(xí)和使用過程總結(jié)如下,方便日后參考。 DataTables提供了完善的前后臺分頁功能,現(xiàn)將后臺分頁的學(xué)習(xí)和使用過程總結(jié)如下,方便日后參考。 一、前臺頁面的配置 DataTables幾乎可以在不改變前臺代碼部分即可實現(xiàn)前臺分頁到后臺分頁的轉(zhuǎn)換,唯一需要做的就是在代碼中開啟DataTables后臺分頁功能即可: serverSide : true...

    ChristmasBoy 評論0 收藏0
  • 用vue搭建的個人博客介紹----mapblog小站

    摘要:后端主要使用的框架,數(shù)據(jù)庫采用。后臺管理登錄采用與后端進(jìn)行登陸狀態(tài)的確認(rèn)。本文首發(fā)于小站,這是一個積累和分享知識的個人博客 這篇文章擱置了很長時間,最終決定還是把它寫出來,給剛開始學(xué)習(xí)vue并且想用vue寫個人博客的同學(xué)一個參考。因為當(dāng)初我也是參考了其他人分享的知識,從一個vue小白變成了一個入門級選手,并最終完成了這個個人博客的搭建工作,代碼已托管在Github-justJokee。...

    Ashin 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<