Day14 - 做一半的产品编辑 modal

今天回顾六角的课程范例,重做一遍产品编辑 modal ,但目前只做了一半

<template>
  <!-- Button trigger modal -->
  <button
    type="button"
    class="btn btn-primary"
    data-bs-toggle="modal"
    data-bs-target="#exampleModal"
  >
    按这边
  </button>

  <!-- Modal -->
  <div
    class="modal fade"
    id="exampleModal"
    tabindex="-1"
    aria-labelledby="exampleModalLabel"
    aria-hidden="true"
  >
    <div class="modal-dialog modal-xl modal-fullscreen-md-down">
      <div class="modal-content">
        <div class="modal-header">
          <h5 class="modal-title" id="exampleModalLabel">商品资讯</h5>
          <button
            type="button"
            class="btn-close"
            data-bs-dismiss="modal"
            aria-label="Close"
          ></button>
        </div>
        <div class="modal-body">
          <div class="row">
            <div class="col-md-6">
              <div v-for="i in 3" :key="'img' + i" class="mb-3">
                <label :for="'img' + i" class="form-label">图片网址</label>
                <input
                  type="text"
                  class="form-control"
                  :id="'img' + i"
                  placeholder="image url"
                  // 与当前的产品 url 双向绑定
                  v-model="tempProduct.imageUrl[i]"
                  <img :src="tempProduct.imageUrl[i]" :alt="tempProduct.title" />
                />
              </div>
            </div>
          </div>
        </div>
        <div class="modal-footer">
          // 登入才能取得 api 的 Token
          <button @click="login">login</button>
          // 取得 Token 才能捉取後台的产品清单
          <button @click="getProductList">getProductList</button>
          // 取得後台产品清单才能从中选一个产品,利用该产品 id,取得该产品完整资讯
          <button @click="getProduct">getProduct</button>
          <button
            type="button"
            class="btn btn-secondary"
            data-bs-dismiss="modal"
          >
            Close
          </button>
          <button type="button" class="btn btn-primary">Save changes</button>
        </div>
      </div>
    </div>
  </div>
</template>

<script>
import axios from "axios";
export default {
  name: "Modal",
  data() {
    return {
      user: {
        email: "----",
        password: "----",
      },
      token: "",
      uuid: "----",
      id: "----",
      // 取得指定产品完整资料後,将他暂存与此
      tempProduct: {
        id: "",
        title: "",
        category: "",
        content: "",
        description: "",
        imageUrl: [],
        enabled: false,
        origin_price: 0,
        price: 0,
        unit: "",
        options: {
          message: "Hello World!",
        },
      },
    };
  },
  methods: {
    login() {
      const api = "我的 api";
      axios
        .post(api, this.user)
        .then((res) => {
          const token = res.data.token;
          const expired = res.data.expired;
          // 将 token 与他的到期时间存到浏览器 cookie 里
          document.cookie = `loginToken = ${token}; expires = ${new Date(
            expired * 1000
          )};`;
        })
        .catch((err) => {
          console.log(err);
        });
    },
    getProductList() {
      const api = `我的 api`;
      // 先从浏览器 cookie 取得 token
      this.token = document.cookie.replace(/(?:(?:^|.*;\s*)loginToken\s*=\s*([^;]*).*$)|^.*$/, "$1");

      // https://github.com/axios/axios#global-axios-defaults
      // 并且 header 按照後端 api 文件的规格要求填上 Bearer token 字样
      axios.defaults.headers.common.Authorization = `Bearer ${this.token}`;
      axios
        .get(api)
        .then((res) => {
          console.log(res);
        })
        .catch((err) => {
          console.log(err);
        });
    },
    getProduct() {
      const api = `我的 api`;
      // 先从浏览器 cookie 取得 token
      this.token = document.cookie.replace(/(?:(?:^|.*;\s*)loginToken\s*=\s*([^;]*).*$)|^.*$/, "$1");

      // https://github.com/axios/axios#global-axios-defaults
      // 并且 header 按照後端 api 文件的规格要求填上 Bearer token 字样
      axios.defaults.headers.common.Authorization = `Bearer ${this.token}`;
      axios
        .get(api)
        .then((res) => {
          console.log(res);
          this.tempProduct = res.data.data;
        })
        .catch((err) => {
          console.log(err);
        });
    },
  },
};
</script>

<style></style>


今天笔记到这,如果内容有出入,都在麻烦纠正了,谢谢您 (っಠ‿ಠ)っ


<<:  Day13 - 明天复习贪食蛇,今天先铺舞台

>>:  13 - Logs - 挖掘系统内部发生的状况 (1/4) - Logs 与 Filebeat 的基本介绍

【Day 07】tuple 介绍!

前言 今天要来继续接着介绍 tuple 的使用方法,包含了 Unpack(拆包),还有取出 tupl...

Day 23 : Tkinter-利用Python建立GUI(基本操作及布局篇)

在进入Tkinter之前,先来讲讲GUI到底是甚麽。 GUI GUI其实就是图形使用者介面(Grap...

[Day 14] Delete 删除资料

利用Day 13的collection public function getData(){ ret...

[Day14] React Native - Redux Saga

Create Action 在建立 Saga 之前,我们要先建立对应的 action ,以前一篇 E...

Day 16 偷偷摸鱼放个waitFor

import { render, screen, waitFor } from '@testing-...