--- tags: Vue 直播班 - 2021 夏季班 --- # 7/9 線上 Slack 助教 ## 今日助教輪班時間 Ryder:7/9 (五) 回覆時間:早上 9:00 -下午 1:00 ## 發問規範 老師助教同學們好,**這是我的 Codepen**,我**原本預期**「JS 第 8 行會出現數字 8」,**但卻出現**「預期外的結果是 0」,想問下問題出在哪裡? ## 注意 1. 請各位先到 Slack 上將問題放在助教服務內的 thread,如圖 ![](https://i.imgur.com/nHE3sOx.png) 2. 遵循以上的發問規範以便助教查看問題,不可直接貼上網址而沒有說明文字或者只提供截圖 3. 助教會依照 Slack 上的順序回覆問題 4. 以下問題區塊只能由助教自行增加 5. 助教會將回覆寫在下方問題區塊 ## 問題 1. 金金: 助教好,這是我的github https://github.com/vezona/hexschool-vue-2021.5/blob/main/w3_2021.05.21/w3_mainHW/w3_mainHW_products.js 我原本預期「JS 第 90行會判斷是編輯或新增產品」,但目前點擊編輯後的確認紐,卻都是直接新增一個產品。想請問問題出在哪裡,謝謝~ > 助教回覆: > - 這邊看是同學 66 、 69 行 this.isNewTitle 的賦值剛好寫反囉。 > - 以編輯產品為例,點擊編輯產品後同學會將 this.isNewTitle 賦予 false 的值。 > - 然而在 updateProduct 中,因為 this.isNewTitle 是 false 便不會將 editProductURL 、 http 都換成 編輯商品使用的值,因此變成新增商品哩。 > - 解決辦法就是將 66 、 69 行 this.isNewTitle 的賦值對換過來喔。 --- 2.Ming 助教你好,我參考同學code,也嘗試製作自訂換頁功能,[github](https://github.com/ankazu/spirit/blob/master/src/views/frontend/Products.vue#L202) ,以下遇到幾個問題。 1.取得pages資料後,嘗試把pageProducts 放到29行,但Pagination 沒有出現第二頁的頁籤,相同產品也會一直出現 PS. 71行的判斷還沒移除。 2.這樣修改後,我的filterCategory方法,看起來是要重新編寫過。 3.關於proxy的問題,我在Product 219行,遇到轉換問題,請問num為什麼不能用parseInt來做轉換。 希望助教能給個方向,我卡住了QQ。 謝謝助教 > 助教回覆 > 1. 分頁數量主要是根據 page.total_pages 這個屬性去做頁數渲染,這邊看同學 getProductsList 中沒調整到這個屬性。 > - 207 行的 pages.page_total 替換成 page.total_pages,替換後第 2 頁就出現囉,另外其他的 pages.page_total 也都要做替換。 > > 2. 不需要完全重新編寫喔,商品的基礎資料是 pageProducts ,而同學 filterCategory 過濾後的資料是 this.products,因此要把 filterCategory 產生的資料改成 this.pageProducts ,並且再執行 this.getProductsList() 重新獲得分頁資料。 ``` filterCategory(e) { this.isLoading = true; this.pageShow = false; const api = `${process.env.VUE_APP_API}/api/${process.env.VUE_APP_PATH}/products/all`; this.$http.get(api).then((res) => { if (res.data.success) { this.pageProducts = res.data.products.filter((product) => { if (product.category === e) { this.productValue = e; return product; } if (e === undefined) { this.productValue = 1; return this.products; } return false; }); this.getProductsList(this.pageProducts); this.isLoading = false; } else { console.log(res.data.message); } }); }, ``` > 3. 這邊看是能的喔,要注意的是有裝 eslint , eslint 會要求 parseInt() 要寫入第二個參數,第二個參數代表的是什麼進制喔,詳細可參考 [MDN 文件](https://developer.mozilla.org/zh-TW/docs/Web/JavaScript/Reference/Global_Objects/parseInt) ``` const num1 = parseInt(this.tempProduct.acidity, 10); ``` --- 3.金金 助教好~又是我:rolling_on_the_floor_laughing: 這是我的github https://github.com/vezona/Sweet_Home_Vue3_Project/blob/main/src/components/editModal.vue Q1.在第36行我想呈現其他圖片。明明看vue devtool都能抓到imagesUrl,但這邊一直說抓不到imagesUrl >< Q2. 我在此頁第42行( https://github.com/vezona/Sweet_Home_Vue3_Project/blob/main/src/views/back/ProductsList.vue ) 想點擊刪除的按鈕,卻沒辦法成功跳出deleteModal 再請助教協助!! 感謝 (edited) > 助教回覆 > 1. 這邊看 editModal.vue 有很多錯字喔, 26 行 - 50 行 應該是 `temProduct.imageUrl` 同學打成 `tempProduct.imagesUrl` ,另外外層 ProductsList.vue 中 `imagesUrl` 也請改成 `imageUrl` 。 > 上面錯字都調整後, console 就不會噴錯囉 > 2. 這邊看 delModel.vue 中綁在 HTML 的 ref 是 `ref="delProductModal"` > - 但同學 mounted 中確是指向 `this.$refs.delmodal` 還請替換上面 HTML 的 ref 名稱喔 ``` mounted () { // 用refs取得Dom元素 this.delmodal = new Modal(this.$refs.delProductModal) }, ``` --- 4.Tommy 助教好,這是我的[github](https://github.com/apple19890708/hexschool-homework/tree/main/hexschool-homework-week-6),我的eslint設定完成後,用 npm run serve 會一有下面這張圖的問題,但我不確定是我哪邊沒設定好,再請助教協助,謝謝。 > 助教回覆 這邊金金同學有在問題 Slack 回覆,他的回覆是正確的喔,這些都是裝了 ESLint 後, ESLint 針對你 專案中 code 提出的警告、建議,同學可以按照金金同學建議調整喔。 之後有發生 ESLint 錯誤也都可以先 google 哩,ESLint 有詳細文件,只要有搜尋錯誤標題,他都會顯示哩。 --- 5.蓋瑞 助教好: 想請問我VUE CLI編譯出dist後,但點擊裡面index.html會是空白沒有內容,console後會出現以下圖片,但我本地端可以運作,想請問還有哪裡要設定嗎? 這是我的github https://github.com/garyissogood/2021vue-week/tree/main/week-6 及上傳的github page https://garyissogood.github.io/2021week6/ ![](https://i.imgur.com/RPw3HnX.png) > 助教回覆 > 1.會需要在根目錄設置 vue.config.js ,裡面的設置可以參考[這篇文章](https://tzuhui.github.io/2020/03/02/Vue/Vue-CLI3-to-github-pages/) > 2. 目前看同學 GitHub 專案中沒有 dist 資料夾,若要開啟 GitHub page 也需要將 dist 資料夾上傳到 GitHub。 > - 也補充一點,如果同學為了開啟 GitHub page ,將專案本身和 dist 資料夾上傳到同一個分支,vue.config.js 會和上面文章稍有不同,這部分可[參考其學員專案設置](https://github.com/Iven10252158/final_project/blob/main/vue.config.js) --- 6.Erica 助教好,這是我的 [Repo](https://github.com/ericacadu/panya) 1.我想在後台 productModal.vue 加入 Draggable 功能 在第 337 行測試時發現,如果是一開始就建立好的資料可以顯示,但如果是打開 modal 才傳入的資料就不會顯示 2. 同樣在 productModal.vue 選擇類別和單位的部分,希望在沒有選擇的時候可以送出空值,並和其他必填選項一起跳出提示,但依舊是顯示預設文字 3. 前台購物車調整數量的 input,如果想要點選 focus 狀態時,讓游標自動在字串的最後面該怎麼做呢? 以上請助教幫我看看該怎麼調整,謝謝 (edited) > 卡斯伯回覆 1. Draggable 也是元件的概念,因此可以確保傳入的資料是新的,可以使用 v-if 在外進行判斷 ``` <div v-if="photos.length"> <Draggable v-model="photos"> <template #item="{item}"> {{ item }} </template> </Draggable> </div> ``` 2. `<option value="" selected disabled>選擇類別</option>` 可以帶入空值喔 3. 對於操作 input 內的游標我也沒有處理過喔~,建議可以先把整體完成後再來研究這段 :) --- 7.蔡皓全 助教好,我想請問我想像[這網站](https://www.cheogajip.com.tw/) 一樣按了右上方的menu後網頁就不能再上下滾動是用了甚麼語法呢? 2.為甚麼我用npm 載入了animate.css沒有效果但cdn載入就有呢 我的[github](https://github.com/DavidTsai-whole/vuecli3) 謝謝 > 助教回覆 > 1. 這個效果主要核心是 CSS 喔,在開啟選單時,在 body 添加 overflow-y: hidden 這個 CSS。 ``` body{ overflow-y: hidden; } ``` > 2. 若使用 npm 方式引入,那要在 main.js 中使用 ``` import 'animate.css' ``` > 這樣才會吃到 animate 的 CSS 效果哩。 --- 8.Jordan_Tseng 老師、助教好, 這是我的[扣](https://github.com/Jordan-TTC-Design/vue-2021-finalwork)、[頁面](https://jordan-ttc-design.github.io/vue-2021-finalwork/dist/#/),我最後的助教時間想請教幾個問題: 1.如果我想首頁單獨header樣式不同,就是要跟其他前台不同頁面綁在不同的母元件上嗎? 2.如果我想做一個假的登入,是只要在原本Front多增加一個值,然後在設定入境那裡每個都寫props?每個子頁面加上都取值後先做一次判定這樣?還是也換掉最外層元件? 3.昨天有問到關於swiper的問題,感謝助教幫忙,讓我知道真的滿多狀況都會因為資料還沒取好,導致畫面有問題。我有用if去判斷了,切換按鈕本地OK,但github page也是爆掉~其實我也有其他好幾個像是輸入匡都是還沒資料上去導致都要用v-if判斷。這個我是想問說以我全部職位頁面為例子,我用了很多不同陣列,很多都環環相扣,而且都是非同步進行,所以感覺好多不同function 都糾纏在一起,我要下助教說的判斷,也就要回去閱讀到底我順序是如何。這是正常嗎?我有看到有人分享說盡量讓fuction乾淨一點,這裡會怎麼做到比較好。 > 助教回覆: > 1. 最好狀況當然是在各自 .vue 檔中設定套入需要的 header 樣式,但也有有一種方法是,將 header 集中在 Front.vue 在透過 `this.$router.currentRoute` (當前路由) 搭配 v-if 去做 header 顯示,但會比較建議在各自 .vue 檔套入需要的樣式,不管事後序維護還是程式碼管理都是比較好的方法。 >2. 這邊不清楚同學製作假的登入,目的為何?還請同學補充一下需求哩,要釐清你的需求才比較好給建議哩。 >3. 這邊看 fuction 數量是正常的,運作邏輯也沒有什麼問題,要說比較有問題的函示是 SearchList.vue 的 searchJob ,一般而言這種會需要搜尋大量資料(資料庫)的內容都是交由後端完成,因為同學本來資料就較為複雜,又要完成比較偏向後端處理的功能,自然會造成這種函示複雜的現象哩。 > >同學提到的 全部職位頁 函示處理上也都是正確的,因為同學本身設計的資料較為複雜,因此同學再對 Vue 、 JS 還不是很熟悉狀況,會覺得混亂是正常的。 >如果會有不清楚自己的 fuction 做什麼處理,這邊建議同學多寫註解、或是筆記哩。 > --- (這邊只能由助教編輯,問題請到 thread 上詢問)