欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Angular2 PrimeNG分頁模塊學(xué)習(xí)

 更新時間:2017年01月14日 10:03:48   作者:weixin_36333953  
這篇文章主要為大家詳細(xì)介紹了Angular2 PrimeNG分頁模塊學(xué)習(xí)教程,具有一定的參考價值,感興趣的小伙伴們可以參考一下

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

Paginator分頁組件

GITHUB地址

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

  1. 由父組件傳入數(shù)據(jù)總數(shù)量,每頁顯示數(shù)量,可自定義初始頁
  2. 由父組件傳入分頁按鈕個數(shù)
  3. 有第一頁,上一頁,下一頁,最后一頁按鈕
  4. 可在頁面選擇性更改每頁顯示數(shù)量

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

第一頁按鈕:

復(fù)制代碼 代碼如下:
 <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.鼠標(biāo)移入移出更改hoveredItem變量,并以此更改樣式
2.點(diǎn)擊click事件,調(diào)用changePageToFirst(event)處理

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

分頁按鈕:

復(fù)制代碼 代碼如下:
<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從分頁按鈕數(shù)組中循環(huán)出來的,所以我們需要去確定這個數(shù)組

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

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

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

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

//是否為最后一頁
isLastPage(): boolean {
 return this.getPage() === this.getPageCount() - 1;
}

//確定當(dāng)先需要顯示的起始分頁和結(jié)束分頁
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);
 }
}

//點(diǎn)擊分頁
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);
}

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

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

您可能感興趣的文章:

相關(guān)文章

  • AngularJS表單基本操作

    AngularJS表單基本操作

    這篇文章主要為大家詳細(xì)介紹了AngularJS表單基本操作的相關(guān)資料,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-01-01
  • angular2組件中定時刷新并清除定時器的實(shí)例講解

    angular2組件中定時刷新并清除定時器的實(shí)例講解

    今天小編就為大家分享一篇angular2組件中定時刷新并清除定時器的實(shí)例講解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-08-08
  • Angular實(shí)現(xiàn)form自動布局

    Angular實(shí)現(xiàn)form自動布局

    這篇文章主要介紹了Angular實(shí)現(xiàn)form自動布局的相關(guān)資料,以代碼片段的形式分析了Angular實(shí)現(xiàn)form自動布局的實(shí)現(xiàn)方法,感興趣的小伙伴們可以參考一下
    2016-01-01
  • angular6的table組件開發(fā)的實(shí)現(xiàn)示例

    angular6的table組件開發(fā)的實(shí)現(xiàn)示例

    這篇文章主要介紹了angular6的table組件開發(fā)的實(shí)現(xiàn)示例,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-12-12
  • AngularJS 避繁就簡的路由

    AngularJS 避繁就簡的路由

    這篇文章主要為大家詳細(xì)介紹了AngularJS 避繁就簡的路由的相關(guān)資料,感興趣的小伙伴們可以參考一下
    2016-07-07
  • AngularJS ng-change 指令的詳解及簡單實(shí)例

    AngularJS ng-change 指令的詳解及簡單實(shí)例

    本文主要介紹AngularJS ng-change 指令,這里對ng-change指令資料做了詳細(xì)介紹,并提供源碼和運(yùn)行結(jié)果,有需要的小伙伴參考下
    2016-07-07
  • Angular應(yīng)用prerender預(yù)渲染提高頁面加載速度

    Angular應(yīng)用prerender預(yù)渲染提高頁面加載速度

    這篇文章主要介紹了Angular應(yīng)用prerender預(yù)渲染提高頁面加載速度,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-10-10
  • Angular2自定義分頁組件

    Angular2自定義分頁組件

    本篇文章主要介紹了Angular2自定義分頁組件的相關(guān)知識。具有很好的參考價值。下面跟著小編一起來看下吧
    2017-04-04
  • AngularJS表單驗(yàn)證功能分析

    AngularJS表單驗(yàn)證功能分析

    這篇文章主要介紹了AngularJS表單驗(yàn)證功能,結(jié)合具體實(shí)例形式分析了AngularJS表單驗(yàn)證的操作步驟、實(shí)現(xiàn)技巧與相關(guān)注意事項(xiàng),需要的朋友可以參考下
    2017-05-05
  • 詳解AngularJS ng-class樣式切換

    詳解AngularJS ng-class樣式切換

    本篇文章主要介紹了詳解AngularJS ng-class樣式切換,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-06-06

最新評論