91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Angular2 PrimeNG分頁模塊的示例分析

發布時間:2021-07-22 11:31:54 來源:億速云 閱讀:151 作者:小新 欄目:web開發

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

Angular2 PrimeNG源碼學習

Paginator分頁組件

GITHUB地址

首先分析一下分頁功能的需求:

  1. 由父組件傳入數據總數量,每頁顯示數量,可自定義初始頁

  2. 由父組件傳入分頁按鈕個數

  3. 有第一頁,上一頁,下一頁,最后一頁按鈕

  4. 可在頁面選擇性更改每頁顯示數量

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

第一頁按鈕:

 <a href="#" #firstlink class="ui-paginator-first ui-paginator-element ui-state-default ui-corner-all" (mouseenter)="hoveredItem = $event.target" (mouseleave)="hoveredItem = null" (click)="changePageToFirst($event)" [ngClass]="{'ui-state-disabled':isFirstPage(), 'ui-state-hover':(firstlink === hoveredItem && !isFirstPage())}" [tabindex]="isFirstPage() ? -1 : null"> <span class="fa fa-step-backward"></span> </a>

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

上一頁,下一頁,最后一頁和第一頁類似

分頁按鈕:

<span class="ui-paginator-pages">
     <a href="#" #plink *ngFor="let pageLink of pageLinks" class="ui-paginator-page ui-paginator-element ui-state-default ui-corner-all"(mouseenter)="hoveredItem = $event.target" (mouseleave)="hoveredItem = null" (click)="changePage(pageLink - 1, $event)"
     [ngClass]="{'ui-state-hover':(plink === hoveredItem), 'ui-state-active': (pageLink-1 == getPage())}">{{pageLink}}
     </a>
 </span>

分頁按鈕是通過*ngFor從分頁按鈕數組中循環出來的,所以我們需要去確定這個數組

下面處理數組,和各個按鈕的事件

//每頁顯示條目,默認0
@Input() rows: number = 0;
//顯示分頁按鈕數量,默認5
@Input() pageLinkSize: number = 5;
//點擊按鈕后向父組件發送事件
@Output() onPageChange: EventEmitter<any> = new EventEmitter();
//調整每頁顯示條目數量的下拉菜單
@Input() rowsPerPageOptions: number[];
//定義分頁按鈕
pageLinks: number[];
_totalRecords: number = 0;
_first: number = 0;
//數據總數
@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();
}
 //獲取一共多少頁
getPageCount() {
 return Math.ceil(this.totalRecords / this.rows) || 1;
}

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

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

//是否為最后一頁
isLastPage(): boolean {
 return this.getPage() === this.getPageCount() - 1;
}
//確定當先需要顯示的起始分頁和結束分頁
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];
}

//更新需要顯示的分頁條目
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);
 }
}

//點擊分頁
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();
 }
}
//第一頁
changePageToFirst(event){
 this.changePage(0,event);
}

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

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

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

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

以上是“Angular2 PrimeNG分頁模塊的示例分析”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

肃宁县| 建瓯市| 西盟| 怀宁县| 阳江市| 林周县| 广河县| 拜城县| 盈江县| 太湖县| 阿鲁科尔沁旗| 和政县| 万盛区| 新泰市| 泰兴市| 桐乡市| 名山县| 凤阳县| 仁化县| 双辽市| 德兴市| 永登县| 石台县| 连平县| 弋阳县| 双峰县| 珠海市| 海阳市| 中江县| 花垣县| 安溪县| 怀仁县| 米泉市| 林芝县| 南充市| 永定县| 阜平县| 石嘴山市| 巴南区| 大石桥市| 宁夏|