CHAPTER 22 · PRACTICE WORKSPACE

產品列表、資料渲染與分頁

完成可前後翻頁的產品列表

02 Checkpoint 1 1/3
  1. 01Starter讀懂作品骨架
  2. 02Checkpoint 1加入第一項能力
  3. 03Checkpoint 2累積第二項能力
  4. 04Solution核對完整結果

TASK STATUS

三項任務目前狀態

TASK-01已完成

依關鍵字與價格查找產品

修改檔案:script.js

完成後看見:可以關鍵字、價格或兩者查找產品

TASK-02本階段處理

分頁並渲染查找結果

修改檔案:script.js

完成後看見:查找結果每頁最多三筆,卡片與頁碼同步

TASK-03稍後處理

限制上一頁與下一頁邊界

修改檔案:script.js

完成後看見:首末頁按鈕正確停用,無查找結果時顯示 0 / 0 且兩鍵停用

WORKSPACE

本階段實作區

已完成 TASK-01;先核對可見結果,再前往 TASK-02。

FOCUS TASK · TASK-02

現在只處理:分頁並渲染查找結果

修改:script.js

完成後:查找結果每頁最多三筆,卡片與頁碼同步

講解時展開:2 個小型比較

目前頁資料 vs 全部結果|畫面只顯示切片

比較:getPageItems 取出目前頁,總筆數與頁碼仍要對回完整查找結果。

現在做:在 Checkpoint 2 保持價格「全部」,先記錄 getFilteredProducts() 的 7 筆,再點下一頁;確認 getPageItems() 變成商品 4–6、卡片只有 3 張,而總結果仍顯示 7 筆。再點到第三頁確認只剩商品 7。

看預期與證據

預期:getPageItems() 只切目前頁,不能改寫完整 filteredProducts;頁 1/2/3 分別顯示 3/3/1 筆,結果總數仍是 7。

證據:留下三頁的卡片名稱、卡片數、page-info 與總結果數,證明切片與原始查找結果沒有混在一起。

卡片 vs 頁碼控制|兩者必須同步

比較:重新渲染卡片時,頁碼文字與上一頁/下一頁狀態也要同步更新。

現在做:在第 2 頁同時記錄卡片名稱、#page-info#prev.disabled#next.disabled;接著切回第 1 頁與第 3 頁重跑,確認每次 render 都同步更新四項畫面證據。

看預期與證據

預期:頁碼、卡片與按鈕狀態由同一次 render 一起更新;不會出現卡片已換頁但 page-info 或 disabled 還停在上一頁的狀況。

證據:提供第 1/2/3 頁的四欄紀錄:卡片數、頁碼文字、上一頁 disabled、下一頁 disabled。

需要排錯時查看:任務循環(觀察 → 預測 → 實作 → 故障 → 驗收)
  1. A|觀察:在 Checkpoint 1 確認關鍵字與價格已能改變查找結果並重設 page,但多筆結果仍一次全部顯示、頁碼未依 pageSize 切片。
  2. B|預測:先設定一組有多筆結果的查找條件,再切換頁碼,比對卡片內容與頁碼是否同步。
  3. C|實作:在 script.js 的 getPageItems()、render() 完成「分頁並渲染查找結果」,一次只處理本任務責任。
  4. D|故障:若結果不一致,先依原操作重現,再檢查 getPageItems()、render() 與 script.js,最後重跑原操作。
  5. E|驗收:查找結果每頁最多三筆,卡片與頁碼同步

完成條件:DONE-02:查找結果每頁最多三筆,卡片與頁碼同步

PRODUCT LIST

產品列表控制台

把一批產品資料,逐步變成可查找、可翻頁、守住邊界的列表。

查找產品

關鍵字與價格條件會一路保留;每一階段只新增一個責任。

操作後請回頭看右側卡片與頁碼,確認畫面是否跟著狀態一起改變。

RESULTS

產品清單

7 筆資料

CONTINUE

繼續完成 TASK-02

前往 Checkpoint 2,依要求完成「分頁並渲染查找結果」。

前往 Checkpoint 2:完成 TASK-02

CHAPTER HANDOFF

從可操作列表,交棒到可驗證表單

接收第 21 章:沿用固定的 idnameprice rows 契約;本章的七筆 fixture 是可重現入口,不重新處理 GAS。

交給第 23 章:完成後帶著搜尋/價格/分頁狀態、0/0 空結果與首末頁 disabled 證據,下一章直接處理表單驗證與 POST,不重做列表狀態。

前往第 23 章:表單驗證、POST 與資料寫入