目前工作在台北,住也在台北,目前小孩正值活蹦亂跳、電力充沛的階段,有小孩的爸媽都知道,假日最重要的就是要帶小孩出門放電,所以為了找尋能放電又不會一直在相同的公園,小孩膩了也是很麻煩的事情,所以就想找一下台北市到底有那些公園可以去巡禮,就試著做了這個 side project 給自己使用。
找台北市公園 API
這是我找到的 data,https://github.com/hsuchihting/taipei_park_data/blob/master/db.json
資料平台當初下載的原始檔案是 CSV,本想嘗試自己轉成遠端 API,無奈會有 CROS 狀況,只好整包先下載下來使用。
確認資料內容與設定需求
看完 API 後我決定只要出現以下幾個條件:
- 一個選擇欄位,用管理單位做分類。
- 一個篩選欄位,在輸入路名可以找到比對的資料。
- 卡片形式呈現,有公園名稱,公園地點跟交通指南。
公園管理處的欄位是:pm_unit
。
可以看到資料的欄位是:pm_name
、pm_location
、pm_transit
。
template 架構
分成兩個區塊,選單與卡片
選單與搜尋欄位
1 | <section> |
卡片
1 | <section> |
JavaScript
說明:
- 資料我用一個變數
originData
包裝,放在 Vue 實體上方,因資料太長,本頁就不呈現,僅擷取一筆資料內容當參考。
1 | { |
search
變數一開始為空值。selectUnit
讓一開始為沒有選擇。parkManagement
為選單內容,也就是公園管理處。- 使用
parkList
方法存放要計算的內容。 - 變數
parkList
的值是資料originData
去做篩選。 - 當我選單的值等於資料的
pm_unit
欄位,以及搜尋文字內容是空值或是跟pm_location
的值一樣的時候,就回傳值到parkData
變數中。 - 透過
watch
檢查search
跟selectUnit
資料變動狀態。
1 | let vm = new Vue({ |
Demo
頁面連結:https://hsuchihting.github.io/taipei_park_vue/
放電小孩公園成就陸續解鎖中。