# 第五週 - 進階語法介紹 ###### tags: `六角學院_Vue直播班_主線任務` ## 目錄 [ToC] --- ## 產品列表頁面 ### 產品列表 **1.** 呼叫 api 取得啟用商品 **2.** 將商品 v-for 到列表上,其中圖片是用 backgroud 的方式,寫法如下,特別注意後面的地方是字串,所以要用引號包起來 ```htmlembedded= <div style="height: 100px; background-size: cover; background-position: center;" :style="{ backgroundImage: 'url(' + item.imageUrl + ')' }"> </div> ``` --- ### 查看更多功能 **1.** 建立 bootsrap 實體 **2.** 用 js 控制開啟和關閉 modal **3.** 將資料帶入 modal **4.** 將 modal 裡的產品數量和 id 傳出,並帶入外面的 addToCart() --- ### 購物車列表 **1.** 呼叫 api 將購物車資訊 v-for 出來 --- ### 加入購物車功能 **1.** 呼叫 api 將商品加入購物車 --- ### 清空購物車功能 **1.** 呼叫清空購物車的 api --- ### 購物車裡刪除單個品項功能 **1.** 呼叫刪除單個品項功能的 api | 問題 | 成因 | 行動 | |:--------------- |:------------------------------ |:------------ | | 打購物車 api 後面有 id 的都打不過,說沒有此品項 | 帶錯 id ,api 的 id 是 cart ID ,修改和新增裡 data 的 id 是 product ID | 修正函式 | --- ### 購物車裡編輯單個品項功能 **1.** 觸發 blur 事件,呼叫 editProductNumInCart() ,呼叫編輯單個品項功能的 api --- ### loading 動畫製作 **1.** data 設置 loadingItem,當點選按鈕時,將該項目的 id 帶入 loadingItem,loading 動畫就啟動 ```javascript= this.loadingItem = id; ``` ```htmlembedded= <i class="fas fa-spinner fa-pulse" v-if="item.id === loadingItem"></i> ``` **2.** button 在等 ajax 時,是不能互動的 ```htmlembedded= <button type="button" class="btn btn-outline-secondary" @click="getProduct(item.id)" :disabled="item.id === loadingItem || !item.is_enabled" > </button> ``` --- ## 表單 ### VeeValiadation 設置 **1.** 引入 CDN **2.** 註冊元件 **3.** 定義規則 ```javascript= // VeeValiadation const { defineRule, Form, Field, ErrorMessage, configure } = VeeValidate; const { required, email, min, max } = VeeValidateRules; const { localize, loadLocaleFromURL } = VeeValidateI18n; // 定義規則 defineRule('required', required); defineRule('email', email); defineRule('min', min); defineRule('max', max); ``` **4.** 加入多國語系 ```javascript= // 加入多國語系外部資源 loadLocaleFromURL( 'https://unpkg.com/@vee-validate/i18n@4.1.0/dist/locale/zh_TW.json' ); // Activate the locale configure({ generateMessage: localize('zh_TW'), }); ```