
datepick에서 이번에 신규로 개발한 기능은
기존 날짜를 선택하면 이전기간과 비교해서 보여주는 datepicker를 개발 중이었다.
이전기간이 변경이 되면,
비교 기간이 자동으로 v-model에 연동되어서 변경이 되는데
아쉬운 점이 연결된 데이터는 변경이 되었는데
datepicker에서는 표시가 안 되는 문제가 발생했다.🤷♀️
오늘은 v-model로 연결된 데이터가 변경되면,
해당 날짜로 datepicker를 focus 시키는 기능을 찾아보기로 했다!
VCalendar
VCalendar는 vue에서 range를 선택하기에 최적화되어있는 datepicker로,
현재 range를 선택할 때 내가 사용하고 있는 datepicker라이브러리이다.
Welcome | VCalendar
vcalendar.io
VCalendar move Methods 이용하기

먼저, 찾아보니 move라는 Methods를 이용하면 target 날짜로 이동이 가능한 function을 제공하고 있는 걸 확인!
sample Code
<template>
  <div>
    <v-date-picker
      ref="date"
      :value="date"
      @input="updateSearchParamsDate"
      is-range
    />
    <v-date-picker
      ref="compareDatepicker"
      :value="compareDate"
      is-range
    />
  </div>
</template>
<script>
import dayjs from 'dayjs';
import duration from 'dayjs/plugin/duration'; //dayjs 기간 계산을위해 추가
dayjs.extend(duration);
  export default {
    data() {1
      return {
        date: {
          start: null,
          end: null
        },
        compareDate: {
          start: null,
          end: null
        },
      }
    },
    methods: {
      updateSearchParamsDate(value) {
        //datepicker에서 선택된 date 세팅
        this.date.start = dayjs(value.start).format("YYYY-MM-DD");
        this.date.end = dayjs(value.end).format("YYYY-MM-DD");
        //date 기간 만큼 이전기간 설정하기
        const dateDifference = dayjs.duration(dayjs(this.date.end).diff(dayjs(this.date.start))).asDays();
        let end = dayjs(this.date.start).subtract(1, 'days').format("YYYY-MM-DD");
        let start = dayjs(end).subtract(dateDifference, 'days').format("YYYY-MM-DD");
        this.compareDate = {start, end};
        //설정된 기간으로 datepicker 이동
        this.$refs.compareDatepicker.move(this.compareDate.end);
      },
    }
  }
</script>
date라는 datepicker에서 데이터가 변경이 되면,
compareDatepicker에서 해당 기간만큼 이전 기간이 자동으로 선택되게 했다.
그 이후에 이전 기간이 만약에 다른 연, 월 일 경우 해당 위치로 datepicker 포커스를 이동시키는 코드이다.
this.$refs.compareDatepicker.move(this.compareDate.end);위 코드를 이용하면 특정날짜로 datepicker를 이동할 수 있다.
👨🦰위 코드 결과화면

move function을 이용해 주니 이제 비교하는 차트가 알아서 그전 데이터로 이동하는 것까지 볼 수 있게 되었다!
편안- 하다
'FrontEnd > Vue.js' 카테고리의 다른 글
| Nuxt3 프로젝트 이동 하기 - 2️⃣ Nuxt3 프로젝트 생성 / 폴더 구조 (0) | 2025.01.30 | 
|---|---|
| Nuxt3 프로젝트 이동 하기 - 1️⃣ Nuxt3란? (Nuxt2와 달라진 점) (0) | 2025.01.29 | 
| vue.js 에서 resize 감지 하는 방법 && carousel 스크린 사이즈 별 데이터 표시하기 (0) | 2023.04.04 | 
| nuxt Error/ Cannot read properties of null(reading 'plugins') 해결 방법 (0) | 2023.02.09 | 
| [Vue.js/nuxt] 페이지 이동 시 감지 후 이벤트 발생하기 (watch/router) (0) | 2023.01.30 |