最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

AngularJS 前臺(tái)分頁(yè)實(shí)現(xiàn)的示例代碼

 更新時(shí)間:2018年06月07日 10:23:47   作者:張喜碩  
本篇文章主要介紹了AngularJS 前臺(tái)分頁(yè)實(shí)現(xiàn)的示例代碼,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧

考評(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è)。

復(fù)制代碼 代碼如下:
<yunzhi-page reload="reloadByPage" total-pages="pageParams.totalPages" total-elements="pageParams.totalElements" first="pageParams.first" last="pageParams.last" number="pageParams.page" size="pageParams.size" number-of-elements="pageParams.numberOfElements"></yunzhi-page>


以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

最新評(píng)論

孟州市| 冕宁县| 常州市| 玉龙| 滨海县| 峨眉山市| 天峻县| 大名县| 沁阳市| 定边县| 玉门市| 嘉黎县| 侯马市| 深水埗区| 房产| 博乐市| 堆龙德庆县| 丰宁| 三原县| 门源| 黑水县| 福泉市| 广德县| 龙海市| 朔州市| 谢通门县| 新余市| 鄂尔多斯市| 顺义区| 潮州市| 焦作市| 藁城市| 盐边县| 张家港市| 朝阳区| 沙坪坝区| 江津市| 深泽县| 驻马店市| 临漳县| 莱芜市|