日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問(wèn)題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
Angular2PrimeNG分頁(yè)模塊的示例分析

小編給大家分享一下Angular2 PrimeNG分頁(yè)模塊的示例分析,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

為匯川等地區(qū)用戶提供了全套網(wǎng)頁(yè)設(shè)計(jì)制作服務(wù),及匯川網(wǎng)站建設(shè)行業(yè)解決方案。主營(yíng)業(yè)務(wù)為成都網(wǎng)站建設(shè)、網(wǎng)站建設(shè)、匯川網(wǎng)站設(shè)計(jì),以傳統(tǒng)方式定制建設(shè)網(wǎng)站,并提供域名空間備案等一條龍服務(wù),秉承以專業(yè)、用心的態(tài)度為用戶提供真誠(chéng)的服務(wù)。我們深信只要達(dá)到每一位用戶的要求,就會(huì)得到認(rèn)可,從而選擇與我們長(zhǎng)期合作。這樣,我們也可以走得更遠(yuǎn)!

Angular2 PrimeNG源碼學(xué)習(xí)

Paginator分頁(yè)組件

GITHUB地址

首先分析一下分頁(yè)功能的需求:

  1. 由父組件傳入數(shù)據(jù)總數(shù)量,每頁(yè)顯示數(shù)量,可自定義初始頁(yè)

  2. 由父組件傳入分頁(yè)按鈕個(gè)數(shù)

  3. 有第一頁(yè),上一頁(yè),下一頁(yè),最后一頁(yè)按鈕

  4. 可在頁(yè)面選擇性更改每頁(yè)顯示數(shù)量

HTML模板代碼:
部分代碼片段

第一頁(yè)按鈕:

   

這段代碼涉及幾個(gè)事件。
1.鼠標(biāo)移入移出更改hoveredItem變量,并以此更改樣式
2.點(diǎn)擊click事件,調(diào)用changePageToFirst(event)處理

上一頁(yè),下一頁(yè),最后一頁(yè)和第一頁(yè)類似

分頁(yè)按鈕:


     {{pageLink}}
     
 

分頁(yè)按鈕是通過(guò)*ngFor從分頁(yè)按鈕數(shù)組中循環(huán)出來(lái)的,所以我們需要去確定這個(gè)數(shù)組

下面處理數(shù)組,和各個(gè)按鈕的事件

//每頁(yè)顯示條目,默認(rèn)0
@Input() rows: number = 0;
//顯示分頁(yè)按鈕數(shù)量,默認(rèn)5
@Input() pageLinkSize: number = 5;
//點(diǎn)擊按鈕后向父組件發(fā)送事件
@Output() onPageChange: EventEmitter = new EventEmitter();
//調(diào)整每頁(yè)顯示條目數(shù)量的下拉菜單
@Input() rowsPerPageOptions: number[];
//定義分頁(yè)按鈕
pageLinks: number[];
_totalRecords: number = 0;
_first: number = 0;
//數(shù)據(jù)總數(shù)
@Input() get totalRecords(): number {
 return this._totalRecords;
}
set totalRecords(val: number) {
 this._totalRecords = val;
 this.updatePageLinks();
}
//高亮按鈕位置
@Input() get first(): number {
 return this._first;
}
set first(val: number) {
 this._first = val;
 this.updatePageLinks();
}
 //獲取一共多少頁(yè)
getPageCount() {
 return Math.ceil(this.totalRecords / this.rows) || 1;
}

//獲取當(dāng)前頁(yè),0為第一頁(yè)
getPage(): number {
 return Math.floor(this.first / this.rows);
}

//是否為第一頁(yè)
isFirstPage(): boolean {
 return this.getPage() === 0;
}

//是否為最后一頁(yè)
isLastPage(): boolean {
 return this.getPage() === this.getPageCount() - 1;
}
//確定當(dāng)先需要顯示的起始分頁(yè)和結(jié)束分頁(yè)
calculatePageLinkBoundaries() {
 let numberOfPages = this.getPageCount();
 let visiblePages = Math.min(this.pageLinkSize, numberOfPages);
 let start = Math.max(0, Math.ceil(this.getPage() - (visiblePages / 2)));
 let end = Math.min(numberOfPages - 1, start + visiblePages - 1);

 const delta = this.pageLinkSize - (end - start + 1);
 start = Math.max(0, start - delta);
 return [start, end];
}

//更新需要顯示的分頁(yè)條目
updatePageLinks(): void {
 this.pageLinks = [];
 let boundaries = this.calculatePageLinkBoundaries;
 const start = boundaries[0];
 const end = boundaries[1];
 for (let i = start; i <= end; i++) {
  this.pageLinks.push(i + 1);
 }
}

//點(diǎn)擊分頁(yè)
changePage(p: number, event) {
 var pageCount = this.getPageCount();
 if (p > 0 && p < pageCount) {
  this.first = this.rows * p;
  const state = {
   page: p,
   first: this.first,
   rows: this.rows,
   pageCount: pageCount
  };
  this.updatePageLinks();

  this.onPageChange.emit(state);
 }
 if (event) {
  event.preventDefault();
 }
}
//第一頁(yè)
changePageToFirst(event){
 this.changePage(0,event);
}

//上一頁(yè)
changePageToPrev(event){
 this.changePage(this.getPage() - 1,event);
}

//下一頁(yè)
changePageToNext(event){
 this.changePage(this.getPage() + 1,event);
}

//最后一頁(yè)
changePageToLast(event){
 this.changePage(this.getPageCount() - 1,event);
}

//通過(guò)下拉菜單更改每頁(yè)顯示數(shù)量
onRppChange(event){
 this.rows = this.rowsPerPageOptions[event.target.selectedIndex];
 this.changePageToFirst(event);
}

以上是“Angular2 PrimeNG分頁(yè)模塊的示例分析”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對(duì)大家有所幫助,如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!


網(wǎng)頁(yè)名稱:Angular2PrimeNG分頁(yè)模塊的示例分析
轉(zhuǎn)載來(lái)于:http://www.dlmjj.cn/article/pgojoj.html