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

AngularJS 前臺分頁實現(xiàn)的示例代碼

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

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

其實分頁的原理也很簡單,我們根據(jù)分頁選擇的頁碼數(shù)和每頁數(shù)據(jù)條數(shù)決定當前顯示的是數(shù)組中的第多少項到多少項,然后再構造分頁的參數(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ù)應該是從0size,加上page * size就是之前的頁數(shù)中的數(shù)據(jù)量。

構建分頁參數(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,則為尾頁。

復制代碼 代碼如下:
<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>


以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關文章

最新評論

依安县| 开平市| 本溪| 苍溪县| 福建省| 申扎县| 淅川县| 桐城市| 江北区| 舒兰市| 平湖市| 漳州市| 博罗县| 辽中县| 山阳县| 富民县| 樟树市| 乌兰浩特市| 喜德县| 闵行区| 山东| 铜川市| 和硕县| 兴文县| 武鸣县| 商丘市| 碌曲县| 张家界市| 娱乐| 象州县| 江门市| 岐山县| 鲜城| 开原市| 洱源县| 越西县| 伊吾县| 东山县| 界首市| 冕宁县| 揭西县|