CHAPTER 22 · PRACTICE WORKSPACE

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

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

01 Starter 0/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 開始修改。

FOCUS TASK · TASK-01

現在只處理:依關鍵字與價格查找產品

修改:script.js

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

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

filter vs paginate|先篩選再分頁

比較:分頁應作用在查找結果上;先分頁再篩選會讓頁碼與結果數量不一致。

現在做:在 Checkpoint 1 先把 page 設成 3,再輸入「商品 2」並選擇「全部」;確認條件改變後 page 回到 1、getFilteredProducts() 只剩 1 筆。接著保持 page 1,分別選「低於 200 元」與「200 元以上」,確認 200 元的商品 3 只落在後者。

看預期與證據

預期:關鍵字與價格都作用在完整 products 上,先得到 filteredProducts,再交給分頁;條件改變時 page 固定回 1,不會拿舊頁碼切出空白結果。

證據:記錄三組輸入(關鍵字、價格、兩者)的 filteredProducts 數量與 page,並指出每次都是先篩選、尚未分頁。

關鍵字/價格狀態|條件要一起驗收

比較:只改一個查找條件時,另一個條件仍需保留,才能確認資料管線沒有被覆蓋。

現在做:先輸入「商品 4」並選「200 元以上」,確認結果只有商品 4;再清空關鍵字但保留價格條件,確認結果恢復為五筆(商品 3–7)。最後改回「全部」,確認兩個控制值都被正確保留與套用。

看預期與證據

預期:清除一個條件不會把另一個條件重設;關鍵字、價格與兩者組合的結果都能由同一個 getFilteredProducts() 解釋。

證據:用三列表格記錄控制值、結果名稱與筆數,證明每次只改一個條件時另一個條件仍有效。

需要排錯時查看:任務循環(觀察 → 預測 → 實作 → 故障 → 驗收)
  1. A|觀察:在 Starter 確認右側完整顯示 7 筆產品;輸入「鍵盤」或選擇價格後清單仍不變,page 仍是初始值。
  2. B|預測:分別輸入關鍵字、選擇價格篩選,再同時套用兩者;在 Console 執行 getFilteredProducts() 核對結果,並確認條件變更後 page 為 1。
  3. C|實作:在 script.js 的 getFilteredProducts() 完成「依關鍵字與價格查找產品」,一次只處理本任務責任。
  4. D|故障:若結果不一致,先依原操作重現,再檢查 getFilteredProducts() 與 script.js,最後重跑原操作。
  5. E|驗收:兩種查找操作可單獨或組合使用,條件變更後回第一頁

完成條件:DONE-01:可以關鍵字、價格或兩者查找產品;兩種查找操作可單獨或組合使用,條件變更後回第一頁

PRODUCT LIST

產品列表控制台

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

查找產品

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

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

RESULTS

產品清單

7 筆資料

CONTINUE

開始 TASK-01

前往 Checkpoint 1,依要求完成「依關鍵字與價格查找產品」。

前往 Checkpoint 1:完成 TASK-01

CHAPTER HANDOFF

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

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

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

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