기록/FRONTEND

[Vue] Event

5월._. 2022. 5. 18.
728x90

DOM 이벤트를 듣기 위해 v-on directive를 사용한다. 이벤트가 트리거될 때 javascript를 실행한다. 

 

1. method 이름

v-on에 이벤트 발생 시 처리해야하는 method의 이름을 받아서 처리한다.

<button v-on:click='메소드이름'>클릭</button>

 

2. inline javascript

메소드 이름을 직접 바인딩하는 대신 인라인 javascript 구문에 메소드를 사용할 수 있다. 

<button v-on:click='counter+=1'>클릭</button>

 

3. $event

원본 DOM 이벤트에 엑세스해야하는 경우 특별한 $event 변수를 사용해 메소드에 전달한다. 

<button v-on:click="greet($event, '홍길동')">Greet</button>

<!--중략-->
<!--vue instance 내부 method-->
 greet: function (e, msg) {
   if (e) e.preventDefault();
   alert('Hello ' + msg + '!');
}

 

4. 이벤트 수식어

$event로 DOM이벤트에 접근할 수 있지만, method는 DOM의 이벤트를 처리하는 것보다 data 처리를 위한 로직만 구현하는 것을 권장한다. 따라서 v-on 이벤트에 이벤트 수식어를 사용할 수 있다.

이벤트 수식어는 여러개 체이닝이 가능하다. 단순히 수식어만으로 사용할 수 있다.

<button v-on:click.stop="메소드이름">클릭</button>
<form v-on:submit.prevent></form>

이벤트 수식어 종류

.stop 이벤트 전파를 중단한다.
.prevent submit 등 기본이벤트의 자동 실행을 중단한다.
.capture 내부 엘리먼트를 대상으로 하는 이벤트가 해당 엘리먼트에서 처리되기 전에 먼저 처리한다.
.self event.target이 엘리먼트 자체인 경우만 트리거를 처리한다. 자식 엘리먼트에는 불가능하다.
.once 한번만 호출된다.
.passive true일 경우, 절대 preventDefault()를 호출하지 않을 것임을 나타낸다.

 

5. 키 수식어

v-on에 대한 키 수식어를 추가할 수 있다.

<button v-on:keyup.enter="메소드이름">클릭</button>

키 수식어 종류

.enter (.13과 동일)
.tab
.delete (delete 키와 backspace 키 모두에서 호출된다.)
.esc
.space
.up
.down
.left
.right

사용자 지정 키 수식어 별칭

전역 config.keyCodes 객체를 통해 사용자 지정 키 수식어 별칭을 지정할 수 있다.

// `v-on:keyup.f1`을 사용할 수 있다.
Vue.config.keyCodes.f1 = 112

시스템 수식어

2.1.x버전부터 추가되었다. 다음 수식어를 사용해 해당 수식어 키가 눌러진 경우에만 마우스 또는 키보드 이벤트 리스너를 트리거 할 수 있다.

.ctrl
.alt
.shift
.meta

 

6. ref, $refs

뷰에서는 $refs 속성을 이용해 DOM에 접근할 수 있다. 그러나 뷰의 가장 중요한 목적 중 하나는 개발자가 DOM을 다루지 않게 하는 것이므로, 되도록 ref를 사용하는 것을 피하는 것이 좋다.

<input type="text" v-model="변수명" ref="ref변수명"/>
 
<!-- 중략 -->
 
<!-- 뷰 인스턴스 내부 -->
console.log(this.$refs.ref변수명.value);

'기록 > FRONTEND' 카테고리의 다른 글

[JS] Module  (0) 2022.05.20
[Vue] Component  (0) 2022.05.19
[Vue] Vue Instance  (0) 2022.05.17
[Vue] Directives  (0) 2022.05.16
[Vue] Vue.js  (0) 2022.05.15

댓글