[Vue] - (七)組件-實作
實作-axios 會員登入
此實作有兩個功能,後端server從github上clone下來在local端跑。
一般來說密碼在送出前會先編碼加密過才傳到伺服器上。
- 登入: Signin-Form
- 查詢帳號是否存在: User-Check
1 | // 後端server資料 |
Library
axios & lodash
ajax - axios
lodash,這邊用到的是debounce
library要先引入cdn
登入
登入成功
輸入錯誤
發出post request後,回傳的data中有個success會有true或false代表有沒有成功。
如果成功,把回傳的name指回組件data中的loggedUser,並在html中用v-if指到相同的名稱,成功就會顯示字串搭配name。
如果失敗,直接把data中error設為錯誤描述,並在html中v-else顯示出來。
呼叫ajax,loading狀態
submit時要讓兩個input跟button處於不能按的狀態,也就是disable的狀態。
綁定disabled屬性搭配名稱,在data中給該名稱為false,在submit函式一執行時就改為ture,ajax成功獲取資料後就改為false。錯誤訊息處理
如果帳號密碼輸入錯誤,顯示錯誤訊息描述,在一修改帳號或者是密碼時就要清空錯誤訊息。
利用watch偵聽username跟password的雙向綁定來達成清空。
檢查
Username已存在
Username不存在
檢查輸入的username是否已經有該資料,data中有雙向綁定的username,還有一個顯示是否存在資料的boolean值。
一輸入就偵聽,不需要按按鈕:watch
一般可以用button來submit,執行方法中的函式。
但也可以一輸入完就馬上去執行,這邊用了watch來偵聽username,一發生改變就呼叫submit函式。輸入後延遲時間執行:lodash
username一輸入就會去執行,這邊使用了
lodash
中debounce
的方法來設定延遲時間,在生命週期的created中就建立this.submitDebounced搭配lodash的debounce,再把watch中的執行函式改為submitDebounced即可。
最後在html中給兩個按鈕可以切換兩個form組件,利用綁定click事件給名稱,在搭配component中:is
的屬性來顯示,component一開始的屬性要設定在vue實例中的data。
1 | <div id="app"> |