728x90
NuxtJS로 만든 웹 사용 중 페이지가 변경될 때마다(URL이 변경될 때마다) 특정 이벤트를 발생시키고 싶어서 찾아봄.
watch를 쓰면 될 것 같긴 했는데 마땅한 방법이 생각 안 나서 찾아봤었는데
방법이 정말 간단했었다.
watch: {
$route(route) {
console.log('$route : ', route);
}
}
방법은 이렇고 페이지를 이동할 때마다 console.log를 찍히는 걸 보면 이렇다.
이걸 이용해 만들어 본건 vuetify의 v-app-bar 안에 v-breadcrumbs를 써서 페이지를 이동할 때마다 페이지의 제목을 표시하고 싶어서 사용해봤었다.
이런 식으로 사용이 가능하다.
소스 일부분은 이렇다.
<template>
<v-breadcrumbs
:items="breadcrumbs"
large
>
<template v-slot:divider>
<v-icon>mdi-chevron-right</v-icon>
</template>
</v-breadcrumbs>
</template>
<script>
export default {
data () {
return {
breadcrumbs:[]
}
},
watch: {
$route(route) {
this.setBreadcrumbs(route);
}
},
methods: {
setBreadcrumbs(route) {
this.breadcrumbs = [];
const path = route.path;
const items = this.items;
for (var i in items) {
if (items[i].items) {
const sub = items[i].items;
for (var j in sub) {
if (path === sub[j].to) {
this.breadcrumbs.push({ text: items[i].title, disabled: false });
this.breadcrumbs.push({ text: sub[j].title, disabled: false });
}
}
} else {
if (path === items[i].to) {
this.breadcrumbs.push({ text: items[i].title, disabled: false });
}
}
}
},
}
</script>
메뉴를 클릭할 때마다 watch를 통해 넘겨받은 route 정보의 path와 등록된 메뉴들 중에 url이 일치하는 메뉴의 이름을 breadcrumbs에 넣어서 화면에 보여주게 해 봤다.
반응형
'VueJS > Nuxt' 카테고리의 다른 글
[VueJS] NuxtJS 빌드시 'md': $grid-gutter / 3 에러 (0) | 2021.08.02 |
---|---|
[VueJS] NuxtJS+Vuetify alert 컴포넌트 만들어보기 (0) | 2021.07.13 |
[VueJS] NuxtJS에 jQuery slick.grid.js 적용해보기 (0) | 2021.06.02 |
[VueJS] NuxtJS에 jQuery 적용하기 (0) | 2021.05.26 |
[VueJS] NuxtJS + VuetifyJS 프로젝트 설치 (Nuxt 설치) (0) | 2021.05.12 |