Rumah > Artikel > hujung hadapan web > Bagaimana untuk melaksanakan fungsi kalendar dalam Vue
Cara melaksanakan fungsi kalendar dalam Vue
Dengan populariti aplikasi web, fungsi kalendar telah menjadi keperluan biasa untuk banyak tapak web dan aplikasi. Tidak sukar untuk melaksanakan fungsi kalendar dalam Vue Proses pelaksanaan akan diperkenalkan secara terperinci di bawah dan contoh kod khusus akan disediakan.
Pertama, kita perlu mencipta komponen Vue untuk mengehoskan fungsi kalendar. Kita boleh menamakan komponen ini "Kalendar". Dalam komponen ini, kita perlu menentukan beberapa data dan kaedah untuk mengawal paparan dan interaksi kalendar.
<template> <div class="calendar"> <div class="header"> <button @click="prevMonth">←</button> <h2>{{ currentMonth }}</h2> <button @click="nextMonth">→</button> </div> <div class="days"> <div v-for="day in days" :key="day">{{ day }}</div> </div> <div class="dates"> <div v-for="date in visibleDates" :key="date">{{ date }}</div> </div> </div> </template> <script> export default { data() { return { currentMonth: '', days: [], visibleDates: [] }; }, mounted() { this.initCalendar(); }, methods: { initCalendar() { const now = new Date(); const year = now.getFullYear(); const month = now.getMonth(); this.currentMonth = `${year}-${month + 1}`; const firstDay = new Date(year, month, 1).getDay(); const lastDay = new Date(year, month + 1, 0).getDate(); this.days = ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat']; this.visibleDates = Array(firstDay).fill('').concat(Array.from({ length: lastDay }, (_, i) => i + 1)); }, prevMonth() { const [year, month] = this.currentMonth.split('-').map(Number); const prevMonth = month === 1 ? 12 : month - 1; const prevYear = month === 1 ? year - 1 : year; this.currentMonth = `${prevYear}-${prevMonth}`; this.updateVisibleDates(); }, nextMonth() { const [year, month] = this.currentMonth.split('-').map(Number); const nextMonth = month === 12 ? 1 : month + 1; const nextYear = month === 12 ? year + 1 : year; this.currentMonth = `${nextYear}-${nextMonth}`; this.updateVisibleDates(); }, updateVisibleDates() { const [year, month] = this.currentMonth.split('-').map(Number); const firstDay = new Date(year, month - 1, 1).getDay(); const lastDay = new Date(year, month, 0).getDate(); this.visibleDates = Array(firstDay).fill('').concat(Array.from({ length: lastDay }, (_, i) => i + 1)); } } }; </script> <style scoped> .calendar { width: 400px; margin: 0 auto; } .header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 10px; } .days { display: grid; grid-template-columns: repeat(7, 1fr); } .dates { display: grid; grid-template-columns: repeat(7, 1fr); } </style>
Kod di atas melaksanakan komponen kalendar asas. Kami mentakrifkan data bulan semasa, hari dalam minggu dan tarikh yang boleh dilihat dalam data
, menggunakan fungsi cangkuk mounted
untuk memulakan kalendar dan menggunakan prevMonth dan <code>nextMonth
kaedah untuk menukar bulan, gunakan kaedah updateVisibleDates
untuk mengemas kini tarikh yang boleh dilihat. data
中定义了当前月份、星期几和可见日期的数据,使用mounted
钩子函数来初始化日历,使用prevMonth
和nextMonth
方法来切换月份,使用updateVisibleDates
方法来更新可见日期。
在模板中,我们使用v-for
指令来循环渲染星期几和日期,并用@click
指令绑定事件来实现点击切换月份。
在样式中,我们使用了grid
v-for
untuk memaparkan secara kitaran hari dalam minggu dan tarikh serta menggunakan arahan @click
untuk mengikat acara untuk menukar bulan dengan mengklik. Dalam gaya, kami menggunakan reka letak Atas ialah kandungan terperinci Bagaimana untuk melaksanakan fungsi kalendar dalam Vue. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!