반응형
Vue directive - 버튼 외 다른 영역 클릭 시 함수 실행 테스트
1. main.js 에 사용할 Vue directive 함수 추가
Vue.directive("click-outside", {
bind: function (el, binding, vnode) {
el.clickOutsideEvent = function (event) {
if (!(el == event.target || el.contains(event.target))) {
vnode.context[binding.expression](event);
}
};
document.body.addEventListener('click', el.clickOutsideEvent)
},
unbind: function (el) {
document.body.removeEventListener('click', el.clickOutsideEvent)
},
});
2. 적용할 버튼에 해당 directive 추가
버튼 영역 외 다른 부분 클릭 시 outsideEvent 함수가 실행됨
<template>
<div>
<button type="button" v-click-outside="outsideEvent"></button>
</div>
</template>
<script>
export default {
props: {},
data() {
return {};
},
mounted() {},
methods: {
outsideEvent() {
// 버튼 외 다른 영역 클릭 시 함수 실행
},
},
};
</script>
'Front-end 개발 > JAVASCRIPT' 카테고리의 다른 글
sveltejs 기본 셋팅 기록 (0) | 2023.04.09 |
---|---|
PC에서 가로 스크롤 터치로 움직일 수 있도록 구현 테스트 (0) | 2023.02.26 |
Vue directive - for문 끝난 후 callback 처리 관련 테스트 (0) | 2023.01.27 |
숫자 comma (,) 포맷 적용 테스트 (0) | 2023.01.11 |
파일 용량 단위 포맷 적용 테스트 (Bytes, GB, MB 등) (0) | 2023.01.11 |