[Vue.js] Vue.js Event

Event

w3school 의 Events 항목을 보면 웹 브라우저에서 발생할 수 있는 다양한 이벤트들을 javascript 언어로 어떻게 처리할 수 있는지 확인할 수 있다.

v-on 속성을 이용하면 이벤트에 대한 처리가 가능하다. v-on:이벤트명='호출할 함수 명' 또는 @이벤트명='호출할 함수 명' 과 같은 형태로 이벤트 발생 시 동작할 함수를 등록할 수 있다.

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<script src="https://unpkg.com/vue"></script>

<style type="text/css">
	.in {
		background-color : red;
		color : yellow;
	}
	.out {
		background-color : yellow;
		color : red;
	}
</style>

<script>
	window.onload = function(){
		var vm1 = new Vue({
			el : '#test1',
			data : {
				imgSrc : './image/logo.png',
				imgWidth : '100',
				data1 : 0,
				data2 : 0,
				addResult : 0,
				InOutCss : 'out'
			},
			methods : {
				btnEvent : function(){
					alert('Button Click Event')
				},
				imgEvent : function(){
					alert('Image Click Event')
				},
				addNumber : function(){
					this.addResult = this.data1 + this.data2
				},
				inEvent : function(){
					this.InOutCss = 'in'
				},
				outEvent : function(){
					this.InOutCss = 'out'
				}
			}
		})
	}
</script>

</head>
<body>
	<div id='test1'>
		<button type='button' v-on:click='btnEvent'>버튼</button>
		<button type='button' @click='btnEvent'>버튼</button>
		<br/>
		<img v-bind:src='imgSrc' v-bind:width='imgWidth' @click='imgEvent'/>
		<br/>
		data1 : <input type='number' v-model.number='data1'><br/>
		data2 : <input type='number' v-model.number='data2'><br/>
		<button type='button' @click='addNumber'>숫자 더하기</button>
		<h3>결과 : </h3>
		<h3 v-bind:class='InOutCss' @mouseenter='inEvent' @mouseleave='outEvent'>마우스 Hover 구현</h3>
	</div>
</body>
</html>

Event 수식어

Vue.js 공식 한국어 홈페이지에서 이벤트 핸드링 문서를 보면 다양한 수식어를 확인할 수 있다. 수식어 종류가 굉장히 많아 기억하기 힘들기 때문에 Reference 홈페이지를 즐겨찾기로 저장하는 것을 추천!

예를들어 .stop 수식어는 이벤트가 발생한 후 해당 태그를 감싸는 상위 태그의 이벤트로 트리거가 전파되는 것을 막아준다. 또한 웹 브라우저에서 지정한 동작을 무시하고 싶을 때는 .prevent 를 사용하면 된다.

Updated:

Leave a comment