Rumah >hujung hadapan web >View.js >Bagaimana untuk melaksanakan komponen kalendar menggunakan Vue?

Bagaimana untuk melaksanakan komponen kalendar menggunakan Vue?

WBOY
WBOYasal
2023-06-25 13:28:483617semak imbas

Vue ialah rangka kerja bahagian hadapan yang sangat popular Ia menyediakan banyak alatan dan fungsi, seperti pembahagian komponen, pengikatan data, pemprosesan acara, dll., yang boleh membantu pembangun membina aplikasi web yang cekap, fleksibel dan mudah diselenggara. Dalam artikel ini, saya akan memperkenalkan cara melaksanakan komponen kalendar menggunakan Vue.

1. Analisis keperluan

Pertama, kita perlu menganalisis keperluan komponen kalendar ini. Kalendar asas harus mempunyai fungsi berikut:

  • Paparkan halaman kalendar bulan semasa
  • Sokongan beralih ke bulan sebelumnya atau bulan berikutnya
  • Sokongan mengklik pada hari tertentu untuk melompat ke halaman maklumat tertentu; hari itu. Pemisahan komponen maklumat bulan dan butang suis;
Badan Kalendar: Bertanggungjawab untuk memaparkan bahagian utama kalendar, iaitu hari.

3. Penulisan komponen

    Sekarang, kami menulis pelaksanaan khusus setiap komponen.
  • Komponen kepala
  • Tanggungjawab utama komponen kepala adalah untuk memaparkan maklumat bulan semasa dan menyediakan fungsi penukaran bulan. Kami boleh melaksanakan penukaran bulan melalui komponen Pilih Kodnya adalah seperti berikut:
  • <template>
      <div class="header">
        <select v-model="currentMonth" @change="onMonthChange">
          <option v-for="month in months" :value="month.value">{{ month.label }}</option>
        </select>
        <button @click="nextMonth">Next</button>
        <button @click="prevMonth">Prev</button>
      </div>
    </template>
    
    <script>
    export default {
      data() {
        return {
          currentMonth: new Date().getMonth() + 1,
          months: [
            { value: 1, label: 'January' },
            { value: 2, label: 'February' },
            { value: 3, label: 'March' },
            { value: 4, label: 'April' },
            { value: 5, label: 'May' },
            { value: 6, label: 'June' },
            { value: 7, label: 'July' },
            { value: 8, label: 'August' },
            { value: 9, label: 'September' },
            { value: 10, label: 'October' },
            { value: 11, label: 'November' },
            { value: 12, label: 'December' },
          ],
        };
      },
      methods: {
        nextMonth() {
          this.currentMonth++;
          if (this.currentMonth > 12) {
            this.currentMonth = 1;
          }
        },
        prevMonth() {
          this.currentMonth--;
          if (this.currentMonth < 1) {
            this.currentMonth = 12;
          }
        },
        onMonthChange() {
          // 处理月份切换
        },
      },
    };
    </script>
  • Di sini kami melaksanakan penukaran bulan melalui komponen Pilih, dan mengisytiharkan bulan semasa Bulan semasa dan senarai semua bulan dalam komponen. Pada masa yang sama, kami juga menambah kaedah nextMonth dan prevMonth pada komponen untuk melaksanakan fungsi penukaran bulan.

Komponen Utama Kalendar

Tanggungjawab utama komponen utama kalendar adalah untuk memaparkan bahagian utama kalendar, iaitu hari. Untuk mencapai kefungsian ini, kita boleh menggunakan gelung for untuk melelaran sepanjang hari dalam bulan semasa dan menjadikannya. Pada masa yang sama, kita juga perlu mengambil kira bahawa komponen kalendar merangkumi beberapa bulan, jadi kita perlu mengira bilangan hari dalam setiap bulan dan hari dalam minggu yang merupakan hari pertama setiap bulan. Untuk masalah ini, kami boleh menggunakan perpustakaan Moment.js untuk pemprosesan tarikh/masa. Kodnya adalah seperti berikut:

<template>
  <div class="body">
    <div class="day" v-for="day in days" :key="day" :class="{ disabled: day === 0 }" @click="onClick(day)">
      {{ day === 0 ? '' : day }}
    </div>
  </div>
</template>

<script>
import moment from 'moment';

export default {
  props: {
    month: Number,
    year: Number,
  },
  data() {
    return {
      days: [],
    };
  },
  computed: {
    startDay() {
      return moment(`${this.year}-${this.month}-01`).day();
    },
    totalDays() {
      return moment(`${this.year}-${this.month}`, 'YYYY-MM').daysInMonth();
    },
  },
  methods: {
    onClick(day) {
      if (day !== 0) {
        // 跳转到该天的具体信息页面
      }
    },
  },
  mounted() {
    let days = Array.from({ length: 42 }).fill(0);
    for (let i = 1; i <= this.totalDays; i++) {
      days[i + this.startDay - 1] = i;
    }
    this.days = days;
  },
};
</script>

Di sini kami mula-mula memperkenalkan perpustakaan Moment.js dan mentakrifkan dua prop, bulan dan tahun, dalam komponen untuk mewakili bulan dan tahun di mana badan kalendar semasa berada. Kemudian, kami menentukan dua sifat yang dikira: startDay dan totalDays, yang digunakan untuk mengira hari dalam seminggu dan bilangan hari dalam bulan masing-masing apabila hari pertama bulan semasa adalah. Akhir sekali, kami menggunakan fungsi cangkuk yang dipasang untuk memulakan data hari, dan menggunakan gelung for untuk merentasi hari setiap bulan dan menjadikannya pada halaman.

Komponen Kalendar

Akhir sekali, mari tulis keseluruhan komponen kalendar. Tanggungjawab utama komponen kalendar adalah untuk mengintegrasikan dua komponen di atas dan mengendalikan beberapa logik global. Kodnya adalah seperti berikut:

<template>
  <div class="calendar">
    <Header />
    <div class="weekdays">
      <div class="weekday">Sun</div>
      <div class="weekday">Mon</div>
      <div class="weekday">Tue</div>
      <div class="weekday">Wed</div>
      <div class="weekday">Thu</div>
      <div class="weekday">Fri</div>
      <div class="weekday">Sat</div>
    </div>
    <Body :month="currentMonth" :year="currentYear" />
  </div>
</template>

<script>
import Header from './Header.vue';
import Body from './Body.vue';

export default {
  components: {
    Header,
    Body,
  },
  data() {
    return {
      currentMonth: new Date().getMonth() + 1,
      currentYear: new Date().getFullYear(),
    };
  },
};
</script>

Di sini, kami memperkenalkan komponen Pengepala dan Badan dan menyarangkannya dalam bekas. Pada masa yang sama, kami juga mengisytiharkan bulan dan tahun semasa dalam komponen.

4. Gunakan komponen kalendar

Kini, kita boleh menggunakan komponen kalendar kita di mana sahaja kalendar diperlukan. Contohnya:

<template>
  <div>
    <Calendar /> <!-- 展示日历组件 -->
  </div>
</template>

<script>
import Calendar from './Calendar.vue';

export default {
  components: {
    Calendar,
  },
};
</script>

Dengan cara ini, kami telah berjaya melaksanakan komponen kalendar mudah menggunakan Vue. Sudah tentu, ini hanyalah versi asas, dan anda boleh melanjutkan fungsinya atau mencantikkan antara mukanya mengikut keperluan sebenar anda. Semoga artikel ini dapat membantu anda.

Atas ialah kandungan terperinci Bagaimana untuk melaksanakan komponen kalendar menggunakan Vue?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn