Vue [05] 이벤트 처리
[1] 인라인 이벤트 처리
◈ 인라인 이벤트
- v-on 디렉티브로 설정 가능
- @[이벤트 이름] = "표현식" 또는 v-on:[이벤트이름]="표현식"
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Document</title>
</head>
<body>
<div id="app">
금액: <input type="text" v-model.number="amount" />
<br />
<button v-on:click="balance += parseInt(amount)">입금</button>
<br />
<button @click="balance -= parseInt(amount)">출금</button>
<br />
<h3>계좌 잔고: {{balance}}</h3>
</div>
<script type="text/javascript" src="https://unpkg.com/vue"></script>
<script type="text/javascript">
let vm = Vue.createApp({
name: 'App',
data() {
return {
balance: 0,
amount: 0,
};
},
}).mount('#app');
</script>
</body>
</html>

[2] 이벤트 핸들러 메서드
◈ 이벤트 핸들러 메서드
- Vue 인스턴스의 methods 속성에 정의한 함수를 이벤트 처리 함수로 연결
[3] 이벤트 객체
◈ 주요 공통 속성
속성명 | 설명 |
target | 이벤트 발생한 HTML 요소 |
currentTarget | 이벤트 리스너가 이벤트 발생시키는 HTML 요소 |
path | 배열값, 이벤트 발생 HTML 요소부터 document, window 객체까지 거슬러 올라가는 경로 |
bubbles | 현재 이벤트가 버블링 일으키는 이벤트인지 여부 |
cancelable | 기본 이벤트 실행 취소 가능한지 여부 |
defaultPrevented | 기본 이벤트 실행 금지되어있는지 여부 |
eventPhase | 이벤트 흐름의 단계 1: 포착 CAPTURE_PHASE 2: 이벤트 발생 AT_TARGET 3: 버블링 BUBBLING_PHASE |
srcElement | IE에서 사용되던 속성, target과 동일한 속성 |
◈ 키 코드 이벤트 관련 속성
속성명 | 설명 |
altKey | ALT 키 눌렸는지 여부 |
shiftKey | SHIFT 키 눌렸는지 여부 |
ctrlKey | CTRL 키 눌렸는지 여부 |
metaKey | 메타키(윈도우키, Command Key) 눌러졌는지 여부 |
key | 이벤트에 의해 나타나는 키의 값 (대소문자 구분) |
code | 이벤트 발생시킨 키의 코드값 ex) a 눌렀을 때 KeyA / Shift 눌렀을 때 Shift |
keyCode | 이벤트 발생시킨 키보드 고유 키보드 ex) a (A) 는 65 (대소문자 구분x) |
charCode | keypress 이벤트가 발생될 때 Unicode |
◈ 마우스 이벤트 관련 속성
속성명 | 설명 |
altKey, ShiftKey, ctrlKey, metaKey |
키보드 이벤트 속성과 동일 |
button | 이벤트 발생시킨 마우스 버튼 0: 마우스 왼쪽 1: 마우스 휠 2: 마우스 오른쪽 |
buttons | 마우스 이벤트 발생 후 눌려 있는 마우스 버튼 값, 아래 값의 조합 1: 마우스 왼쪽 2: 마우스 오른쪽 3: 마우스 휠 |
clientX, clientY | 뷰포트(ViewPort) 영역상 좌표, 스크롤되도 좌표값 영향x |
layerX, layerY | HTML 요소 영역상에서 좌표 (IE 이외 브라우저) |
offsetX, offsetY | HTML 요소 영역상에서 좌표 (IE 브라우저) |
pageX, pageY | HTML 문서(Document) 영역상 좌표 |
screenX, screenY | 모니터 화면(Screen) 영역상 좌표 |
◈ 이벤트 객체의 주요 메서드
속성명 | 설명 |
preventDefault() | 기본 이벤트 자동 실행 금지 |
stopPropagation() | 이벤트 전파 중단 |
[4] 기본 이벤트
◈ 기본 이벤트 (Default Event)
- HTML 문서(요소)에 기능 실행하도록 이미 정의된 이벤트
ex) <a>: 클릭시 href 경로 페이지로 이동
- @이벤트.prevent: 해당 이벤트 차단
[5] 이벤트 전파와 버블링
◈ 이벤트 전파의 3단계
- 포착(Capturing): 부모->자식 순으로 이벤트 전파
- 버블링(Bubbling): 자식->부모 순으로 이벤트 전파 , default
◈ 버블링 차단
- event.stopPropagation() : 버블링을 차단
- .stop : 이벤트 전파 중단, .stopPropagation()과 동일한 효과
- .capture : CATURING_PHASE 단계에서만 이벤트 발생
- .self : RASING_PHASE 단계일 때만 이벤트 발생
[6] 이벤트 수식어
◈ once 수식어
- 한번만 이벤트 발생 후 이벤트 연결 해제
- 모든 이벤트에 연결 가능함
◈ 키코드 관련 이벤트 수식어
- 키 관련 수식어: up, down, left, right, enter, esc, space, tab, delete, ctrl, alt, shift, meta
- @이벤트.enter = "..." : 엔터 쳤을 때 이벤트 핸들러 호출 (자주 사용)
- @keyup.ctrl.enter="..." : ctrl+enter 조합시 이벤트 핸들러 호출
- @keyup.ctrl.c = "..." : ctrl+c 조합시 이벤트 핸들러 호출
◈ 마우스 관련 수식어
- left, right, middle: 마우스 버튼 (좌, 우, 휠)
- 키 관련 수식어도 사용 가능
◈ exact 수식어
- 다른 수식어와 조합해 이벤트 등록할 때 정확하게 일치하는 조합으로 이벤트 일어나야 핸들러 실행
- ex) @click.ctrl.alt.exact="..." : ctrl+alt+click 만 눌렸을 때 이벤트 핸들러 호출됨