---
# System prepended metadata

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

---

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

# 7/2 線上 Slack 助教


## 今日助教輪班時間

Ryder：7/2 (五) 
回覆時間：早上 9:00 -下午 1:00

## 發問規範

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

## 注意

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

## 問題

1. Iven  ：
助教好：
這是[我的程式碼](https://github.com/Iven10252158/final_project)，我後台的產品列表，登入過後，再重新整理都會跑出，驗證錯誤請重新登入的錯誤訊息，但是我看cookie都還在，不理解為什麼這樣，也找不出來哪裡寫錯，想請助教幫我檢查一下，謝謝。

> 助教回覆：
>  - 同學程式碼發生這狀況是正常的喔，因為後台 API 要能正確使用，都會需要經過執行 Admin.vue 這段程式碼才會能正確執行。
```
this.$http.defaults.headers.common.Authorization = token
```
> - 如果還沒執行上段 code 就會出現同學說的『驗證錯誤』
> - 因此同學這邊可以把 Admin.vue 的 checkLogin 改在 created() 就觸發。
> - 而後台商品、優惠券的 getProducts() getCouponsList() 則都使用 mounted() 觸發。
> - 因為 created() 會比 mounted() 早觸發，因此這樣調整後就不會有問題囉。
> 
---

2.圈圈 

助教好：我想做產品重新排序，讓使用者可以在前台點選價格從大排到小時，所有產品由大排到小後顯示（ 196 - 208 行 productArrangment() 的部分）。本來想操控 totalProducts 陣列，但連接畫面的是單頁的 api （products 陣列），不知道該怎麼處理這塊？是否方便提示我一個大方向呢？（突然想到，是不是也是應用 computed 就可以）
[這是我的程式碼](https://github.com/vvvvvvii/tasteof/blob/main/src/views/ProductList.vue)
謝謝！

> 助教回覆：
> - 因為目前 API 沒有支援排序功能，會建議同學想要製作商品排序功能直接使用獲得全部商品的 API (totalProducts)，並放棄頁面的商品 API (products)，接者再對 totalProducts 使用 sort 排序
> - 同學這邊提到的 computed 也是一個方法喔，主要就使用 sort 去改變全部商品排序。
> - 還有一點要提醒同學的是使用 獲得全部商品 就無法使用目前 API 回傳的 pagination 資料囉（因為 API 不支援），pagination 會需要自行設計

>- pagination 相關邏輯、設定可參考下面文章：
> - https://hsiangfeng.github.io/vue/20190729/2401395670/
> - https://hsiangfeng.github.io/javascript/20190505/1432256317/
> - Erica 同學[專案中](https://github.com/ericacadu/panya/blob/master/src/scripts/methods.js#L44)有做出類似功能，同學可以參考看看。 

---
3. 圈圈
不好意思，還想再問一題。我用 computed 製作搜尋欄篩選產品（ 238 行開始的 filterProduct ）。有成功運作，但發現頁碼的 total_pages 不會跟著變動減少。不懂為什麼？

> 助教回覆：
> - 這邊看 pagination 的基礎資料都還是來自，單一商品的資料，但 computed 是使用 totalProducts ，全部商品的資料喔，因為兩邊的基礎資料本來就不相同，因此是無法正確操作的。
> - 只要是使用 全部商品的資料(totalProducts) 就會無法使用 API 回傳的 pagination 喔。
> - 另外一般實做時使用 前端的 搜尋商品的功能，並不會再搭配 pagination 哩。

---
4. Jordan_Tseng 
老師、助教好，[這是我的程式碼](https://github.com/Jordan-TTC-Design/vue-2021-finalwork/tree/master/src)。想請教兩個問題，目前在做後台訂單，我是做求職網站，我的前台訂單會有三種狀態，我現在要篩選一個屬性篩選出其中一種，但是現在因為有些就訂單資料，沒有這個屬性，雖然好像是不影響操作，但是就會一直有錯誤提示出現(如下圖一)。另外想請教，我在前台創建訂單、後台創建企業或職位時，都會有很大量的下拉選單資料，我目前有的寫在html上，有的用js渲染(如下圖二)，我是在想說是不是都用js渲染，然後是可以把這些資料都另外裝在其他元件？不知道助教建議如何比較優？
![](https://i.imgur.com/OouIGPX.png)
![](https://i.imgur.com/NzFKpGZ.png)

> 助教回覆：
1.目前打開後台訂單頁面確實會跳錯，不過有看同學在 DashBoardOrdersList.vue 有使用判斷式進行，是否有 formAction 屬性的分類了，這部分有這樣的處理方法確實正確。 
不過最好的辦法還是刪除沒有改屬性的訂單比較好哩，因為目前 API 無法直接為，完成的訂單新增屬性。

>2.確實會比較建議把資料獨立成 JS 或是 JSON 檔，有需要時再使用 import 引入（mixin 也是方法之一），再使用 v-for 把引入資料進行製作，這樣對 HTML 畫面來說也比較乾淨， 不過這邊看同學的下拉選單是帶有驗證功能的，那製作時就要比較小心，要符合他的規則，官方文件正好也有使用 v-for 製作下拉選單的範例同學也可以參考看看： https://vee-validate.logaretm.com/v4/api/field#rendering-simple-fields-with-as-prop

---
5. Iven
助教好：
不好意思助教，這是第二問，[這是我的程式碼](https://github.com/Iven10252158/final_project)，想問一下，當我的網頁高度不夠時（about.vue）footer會浮在上面是正常的嗎？試了好幾個方法，都會浮在上面，不然就是會在其他頁面（index.vue或products.vue）會卡在中間。
有辦法是不管網頁高度夠不夠，footer都可以黏在最下面的嗎？

> 助教回覆：
> 要達成同學需求會建議在 footer 上方的區塊，使用 min-height 語法並搭配 vh 單位，如果想要呈現的剛剛好，可以搭配 calc 計算功能：
> 以首頁來說會在 .banner  區塊添加以下 CSS
> min-height: calc(100vh - 72px );
> 由於每個頁面需要詳細計算高度不太一樣，其他部分交由同學自行調整囉，[這篇文章也有詳細說明](https://psilocine.github.io/2017/11/05/%E6%B5%85%E6%9E%90CSS%E5%AE%9E%E7%8E%B0Footer%E7%BD%AE%E5%BA%95%E7%9A%84%E5%87%A0%E7%A7%8D%E6%96%B9%E5%BC%8F/)可以參考看看
---

6. Erica 
助教好，這是我的 [程式碼](https://github.com/ericacadu/panya)
我把購物車改成用 mitt 的方式傳遞資料後
在確認購物車的頁面 CheckOrder.vue
想請問為什麼一開始並沒有觸發取得購物車，要重新整理才會觸發呢？

> 助教回覆：
> 這邊是因為更新購物車後，切換到 CheckOrder.vue 會需要進行換頁的動作，如果這種會使用到換頁動作，對 mitt 的資料傳遞來說會較為不穩定，這是 mitt  本身的使用限制。
> 因此會建議 CheckOrder.vue 這種狀況，改使用 API 方式來獲得 cart 資料會比較好哩。
---

7. John G 
助教我想請一下 我原本預期畫面會出現依序的圖片排列但是因為使用V-for所以圖片會重複，因為我有製作了版型但用v-for就會變成這樣 請問我該如何修正?
這是我的程式碼:
https://github.com/johnchan822/taiwantravel/blob/master/src/components/BestSale.vue

![](https://i.imgur.com/7B9HCdQ.jpg)

> 助教回覆：
> - 從同學敘述來看，同學是想要 BestSale.vue 的 v-for 圖片區塊，圖片順序 和 同學附上圖片的順序相同？
> - 如果是的話可以使用 display: flex 的 CSS 語法把圖片版行排好，再使用 v-for 製作哩，flex 製作的基礎版行[如這個範例](https://codepen.io/rider159159/pen/poPJKXd)
> - 如果助教這邊理解有誤，還麻煩請同學再補充一下敘述哩，助教這邊不確定理解是否有誤。
---

8. leo naruhodou

助教好，想請問助教vue cli的npm run serve環境，與npm run build出來後的環境，會有內容不一樣的情況發生嗎?
這裡是我的[github repo](https://github.com/overactive1988/vue_lesson8_homework)
在npm run serve環境中
我的swiper是有呈現Navigation的class樣式的(附圖1)
但在npm run build的環境中
https://overactive1988.github.io/HexSchool_vue_lesson2021/week08/#/product/-Mc_89P1FGB2NLexfyCC
Navigation元件雖然有抓到，但class樣式是空的qq...(附圖2)
這讓我有點對npm run build出來後的內容產生不信任感了Orz...
並想請問助教，應該要如何解決這個問題呢?
![](https://i.imgur.com/PK80EFq.png)
![](https://i.imgur.com/sUfyMzP.png)



> 助教回覆：
這邊把 Product.vue 的
```
import "swiper/swiper.scss";
import "swiper/components/navigation/navigation.min.css";
import "swiper/components/thumbs/thumbs.min.css";
```
>改移到 assets/css/common.scss 中

```
@import "~swiper/swiper.scss";
@import "~swiper/components/navigation/navigation.min.css";
@import "~swiper/components/thumbs/thumbs.min.css";
```
>在重新 npm run build 就會能顯示囉


> 卡斯伯補充：
> Vue 中 scss @import node_modules 的檔案，路徑可以改為 `@` 作為絕對路徑

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