---
# System prepended metadata

title: 6/11 線上 Slack 助教
tags: [Vue 直播班 - 2021 夏季班]

---

---
tags: Vue 直播班 - 2021 夏季班
---

# 6/11 線上 Slack 助教


## 今日助教輪班時間

Ryder：6/11 (五) 
回覆時間：下午 2:00 -下午 6:00

## 發問規範

老師助教同學們好，**這是我的 Codepen**，我**原本預期**「JS 第 8 行會出現數字 8」，**但卻出現**「預期外的結果是 0」，想問下問題出在哪裡？

## 注意

1. 請各位先到 Slack 上將問題放在助教服務內的 thread，如圖
 ![](https://i.imgur.com/nHE3sOx.png)
2. 遵循以上的發問規範以便助教查看問題，不可直接貼上網址而沒有說明文字或者只提供截圖
3. 助教會依照 Slack 上的順序回覆問題
4. 以下問題區塊只能由助教自行增加
5. 助教會將回覆寫在下方問題區塊

## 問題


---
1. Sean wu:
助教您好，這是我的第三週作業[原始檔](https://drive.google.com/file/d/1zRsoMNFj5RSSLdFFb-Xe9ZLBKz8YN-4J/view?usp=sharing)，我是按照老師的加碼影片練習實作，不曉得是哪裡出錯，updateProduct()一直無法順利POST API
出現的錯誤訊息(data: {success: false, message: "驗證錯誤, 請重新登入"})
麻煩指點，謝謝

> 助教回覆： 
這邊看同學登入儲存的 cookie 名稱是 SeanToken
不過在 products.js 的 mounted 使用的是小寫的 seanToken，助教這邊有統一大小寫後，就能正確使用新增產品功能囉。
---
2.Erica 
老師助教同學好，這是我的第五週作業
在訂單結帳的地方用 this.$refs.form.resetForm() 來清空資料
用 console 檢查也確定有清除
但是結帳完成後 > 再次加入購物車 > 並點選結帳
會出現上一筆資料訂單，表示資料沒有被清除
再麻煩助教幫我看看問題出在哪呢？謝謝
https://github.com/ericacadu/course-work

> 助教回覆： 
> 這邊是因為同學 checkout() 後，會執行 getCarts()，而 getCarts() 會獲得 final_total 的值， final_total 獲得值後，就會執行下圖 v-else 的判斷，關閉 DOM，而表單功能是在 v-else 底下，因為 DOM 被關閉 導致表單沒正確清除。
> ![](https://i.imgur.com/Wt4NSz9.png)
> 簡單來說就是表單外層有使用 v-if 消除 DOM ，導致  this.$refs.form.resetForm() 表單清除功能沒有正確清除 表單的 DOM。
> 解決辦法就是移除 圖中的 v-else 哩。

---
3.Andrew Chang 
老師助教同學們好，詢問【第四週作業】，參考課程影片【第三、第四周作業解說-下】將Modal改成【全域註冊】的元件寫法 (products.js _ line 135~283)，並利用$emit觸發外層事件，目前console有跳 [Vue warn]的提示訊息，但執行操作看起來正常(如 updateProduct() 及 deleteProduct())。
◎JS部分:
```
<button type="button" class="btn btn-primary" @click="$emit('update-product', tempProduct)">   (products.js _ line 244)
<button type="button" class="btn btn-danger" @click="$emit('delete-product',tempProduct)">    (products.js _ line 270)
``` 
◎Html部分:
``` 
<product-modal :temp-product="tempProduct" :is-new="isNew"
@update-product="updateProduct" @delete-product="deleteProduct"></product-modal> 
``` 
(products.html _ line 58~59)
◎程式路徑:
[GitHub](https://github.com/hungya777/hexSchoolVue3_2021/tree/main/vueWeek4)
[GitHub Page](https://hungya777.github.io/hexSchoolVue3_2021/vueWeek4/)
另外有去google一下[Vue warn], 只要加上 emits: ["update-product","delete-product"] (products.js _ line 136 目前已註解會跳警告訊息) 就不會有警告訊息，因課程教學中沒提到要加emits: []，
請問是否寫法上出現什麼問題? 謝謝您~

> 助教回覆： 
> 之所以會跳出警告主要是因為 productModal template 標籤最外層應該還要使用一個 div 將 productModal 、 delProductModal 都包起來，不然 Vue 在渲染元件時會不太穩定哩。 
> 不過這邊正確的做法，還是會請同學把 新增商品、刪除產品的 元件拆成兩個，盡量不要放在一起哩。

---

4.Alicia Lo  
Ryder助教您好:
我在安裝Vue Cli的時候有顯示許多 npm WARN deprecated(如附圖紅線地方)，原以為是node版本太舊後來更新到最新版，但還是會出現該字樣。不確定問題出在哪裡，再麻煩助教解惑了，謝謝助教~
https://files.slack.com/files-pri/TH78FC3JL-F024MS80LMT/vue_cli.png

> 助教回覆： 
這邊的警告都是 Vue Cli 的相依套件，而警告的內容是這些套件不在更新(棄用)，這部分可以暫且不管，因為這些相依套件只是不會更新，而不是不能使用哩。
目前從附圖來看，同學安裝全域的 Vue Cli 沒有問題，會先建議同學往下練習，有問題歡迎在提出來。
---

5.Sec 

老師助教同學們好，在ray助教的范例app2.js内的 createOrder function内有一个 
```
this.$refs.form.resetForm
```
在范例内没有定义这个function, 它是存在于vue的global, 但是在我的vue global却找不到这个 this.$refs.form.resetForm, 我在submitForm的 function 内有尝试清空 this.form = { } 但是会报错.

https://github.com/SecYJ/Vue-Live-Week-5-Challenge/blob/master/app.js

> 助教回覆： 
> 這邊之所以報錯，是因為 this.form 中的 name 、 email 、 address 屬性已經有透過 v-model 綁定，如果同學使用
```
  this.form ={} 
```
>那麼在 Vue 看來這些屬性是消失的，因此會報錯。
如果想透過這種手動重製，應該寫成:
```
this.form = {
    name:'',
    email:'',
    comment:'',
    address:'',
    tel:'',
};
```
>另外同學 this.$refs.form 之所以沒東西是因為 index.html 173 行的 <v-form> 沒有綁上 ref="form " 哩，有補上 ref="form" 後
```
this.$refs.form.resetForm()
```
>就能夠使用哩，助教也會比較建議使用這個方法，來做清除表單的動作喔。
>

---
6.Erica :
謝謝助教，有看到回覆了
把 v-else 改成 v-show 就不會被重新渲染，清除表單就沒問題了
另外想請問助教，this.cart.carts 如果沒有加入商品的話會是空陣列
為什麼加入商品 this.cart.carts == true 會回傳 false
導致沒辦法用 this.cart.carts 來判斷購物車是否有內容 

> 助教回覆： 
這邊同學可以隨意建立一個字串、陣列、物件的變數，然後使用該變數去作對比: console.log(xxx==true)
都會回傳 fasle 哩，因為他們的值本來就不相同，除非同學的變數就是布林值的 true ，不然用任何變數去跟 true 作對比都會回傳 false 哩，比如這個[範例](https://codepen.io/rider159159/pen/LYWgQwZ)
>
>如果同學是想判斷購物車數量，建議改用
>`this.cart.carts.length === 0`
>這類的 length 方法來做判斷喔。
---

(這邊只能由助教編輯，問題請到 thread 上詢問)