CHAPTER 22 · PRACTICE WORKSPACE

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

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

03 Checkpoint 2 2/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-02;先核對可見結果,再前往 TASK-03。

FOCUS TASK · TASK-03

現在只處理:限制上一頁與下一頁邊界

修改:script.js

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

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

停用按鈕 vs 無結果狀態|邊界訊息不同

比較:首末頁按鈕停用是導覽邊界,0/0 是查找結果邊界;兩者要分開表達。

現在做:在 Solution 先走到第三頁,確認下一頁 disabled;再輸入不存在的關鍵字,確認卡片換成空結果、page-info 為第 0/0 頁,且上一頁與下一頁都 disabled。

看預期與證據

預期:首末頁的 disabled 代表不能再往外翻;0/0 代表沒有可顯示頁面,兩種邊界都由畫面文字與真正 disabled 同時表達。

證據:保存最後頁與空結果兩張畫面,並記錄 page、totalPages、兩個 disabled 屬性,不只描述按鈕顏色。

第一頁/最後一頁|實際點擊驗收

比較:不能只看按鈕顏色,要從第一頁與最後一頁實際點擊,確認不會越界。

現在做:先在第一頁嘗試點上一頁,再連續點下一頁直到最後一頁,記錄每次 page 與按鈕 disabled;最後再點一次已停用的下一頁,確認 page 與卡片不變。

看預期與證據

預期:第一頁不能往前、最後頁不能往後;被停用的按鈕不會觸發額外翻頁,邊界是行為規則而非只有 CSS 樣式。

證據:提供第一頁、第二頁、最後頁與停用按鈕重點擊後的 page/卡片名稱紀錄,證明沒有越界或空白頁。

需要排錯時查看:任務循環(觀察 → 預測 → 實作 → 故障 → 驗收)
  1. A|觀察:在 Checkpoint 2 使用 7 筆完整資料走到第一頁與最後一頁,確認卡片已分頁,但上一頁/下一頁與 0 筆結果的停用邏輯尚未完成。
  2. B|預測:到第一頁與最後一頁確認邊界;再輸入不存在的關鍵字,確認顯示無結果、第 0 / 0 頁且兩個按鈕都停用。
  3. C|實作:在 script.js 的 updateControls() 完成「限制上一頁與下一頁邊界」,一次只處理本任務責任。
  4. D|故障:若結果不一致,先依原操作重現,再檢查 updateControls() 與 script.js,最後重跑原操作。
  5. E|驗收:首末頁按鈕正確停用,空資料不會顯示第 1 / 0 頁

完成條件:DONE-03:首末頁按鈕正確停用,無查找結果時顯示 0 / 0 且兩鍵停用;首末頁按鈕正確停用,空資料不會顯示第 1 / 0 頁

PRODUCT LIST

產品列表控制台

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

查找產品

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

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

RESULTS

產品清單

7 筆資料

CONTINUE

繼續完成 TASK-03

前往 Solution,依要求完成「限制上一頁與下一頁邊界」。

前往 Solution:完成 TASK-03

CHAPTER HANDOFF

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

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

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

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