iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 30
1
自我挑戰組

Angular 學習雜記系列 第 30

Angular 學習雜記-Angular整合應用網站-員工資料管理系統(完)

  • 分享至 

  • xImage
  •  

終於完成資料庫的基本操作,列表、明細、修改、新增、刪除等功能,都一個一個的說明了。不過,資料庫的操作,還有最重要的查詢。關於這個功能,因為假資料,是用陣列物件來組成的,建議可以先取得所有資料後,再利用陣列物件的indexOf函式來查詢符合的資料。

而查詢出來的資料,在列表時,有可能也會做分頁的動作。所以,在最後的章節,就來討論一下,如何做分頁及查詢的功能。提到分頁,基本的功能,就是設計每頁有多少筆,將總筆數商除,來取得多少頁數,再一頁一頁的取回所屬的資料即可。再利用陣列物件的slice函式來取回所屬的資料。

依上述的說明,將員工資料列表的employee-list.component.ts修改成可查詢、可分頁的方式,程式碼如下:

  // 列表資料物件
  employeelists: Employeeinfo[];
  // 查詢回傳物件
  searchemployeeinfoinfos: Employeeinfo[];

  // 分頁相關變數。
  currentpage: number;      // 現在頁數
  currentpagesize: number;  // 現在一頁筆數
  total: number;            // 總筆數
  totalpages: number;       // 總頁數
  startpoint: number;       // 開始筆數
  endpoint: number;         // 結束筆數

  // 網頁輸入的欄位,接收值
  searchname = '';          // 查詢關鍵字

上述所有可用到的變數宣告及注解,下述為getEmployees()函式的修改,所有的過程,都有注解,程式碼如下:

  getEmployees(): void {
    // 處理非同步機制。
    this.employeeService.getEmployee()
      .subscribe(searchemployeeinfoinfos => {
        this.searchemployeeinfoinfos = searchemployeeinfoinfos;

        // 搜尋條件判斷。
        this.searchemployeeinfoinfos = this.filterItem(this.searchname);

        // 分頁處理。
        this.total = this.searchemployeeinfoinfos.length;

        // 取得總頁數。
        this.totalpages = Math.ceil(this.total / this.currentpagesize);

        // 計算每頁的開始位置。
        this.startpoint = (this.currentpage - 1) * this.currentpagesize;

        // 計算每頁的結束位置。
        if (this.startpoint + this.currentpagesize >= this.total) {
          this.endpoint = this.total;
        } else {
          this.endpoint = this.startpoint + this.currentpagesize;
        }

        // 依開始、結束位置,取得此頁資料陣列。
        this.employeelists = this.searchemployeeinfoinfos.slice(this.startpoint, this.endpoint);

      });
  }

  // 過瀘條件。
  filterItem(sname: string) {
    return this.searchemployeeinfoinfos.filter(function(item) {
      return item.name.indexOf(sname) !== -1;
    });
  }

最後,謝謝大家的支持。又完成這一屈的自我挑戰。也是我將學習Angular的心得,寫出來。接下來,要學習的就是Web API的開發,後續,學習到一個地步,再分享給大家。


上一篇
Angular 學習雜記-Angular整合應用網站-員工資料管理系統(十七)
系列文
Angular 學習雜記30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 則留言

0
阿展展展
iT邦好手 1 級 ‧ 2020-02-10 22:06:43

恭喜完賽

我要留言

立即登入留言