본문으로 바로가기

이벤트 처리 (v-on)

category JavaScript/Vue.js 2021. 7. 15. 16:17

Vue 컴포넌트에서 이벤트를 처리할 때는 v-on 디렉티브를 사용함

v-on 디렉티브는 심볼 @로 사용 가능하다.

 

클릭 이벤트 (v-on:click)

 - 클릭 이벤트는 v-on:click="메소드명" 혹은 @click="메소드명"을 사용해서 추가할 수 있음

<template>
  <div>
    <button 
      type="button"
      @click="increaseCounter"
    >
      Add One
    </button>
    <p>{{ counter }}</p>
  </div>
</template>
<script>
  export default {
    data() {
      return {
        counter: 0,
      }
    },
    methods: {
      increaseCounter() {
        this.counter = this.counter + 1
      },
    },
  }
</script>

 

 - 클릭 이벤트 발생 시 여러 개의 함수를 호출하고 싶다면 다음과 같이 작성하면 됨

<template>
  <div>
    <button 
      type="button"
      @click="one(1), two()"
    >
      Click
    </button>
  </div>
</template>
<script>
  export default {
    data() {
      return {
        counter: 0,
      }
    },
    methods: {
      one(num) {
        alert(num)
      },
      two() {
        alert('Two')
      },
    },
  }
</script>

 

Change 이벤트 (v-on:change)

 - change 이벤트가 가장 많이 사용되는 html 태그는 select 이다. 사용자가 select에서 옵션을 바꿀 때마다 change 이벤트가 발생함

 - change 이벤트는 v-on:change="메소드명" 또는 @change="메소드명"으로 사용함

<template>
  <div>
    <select 
      v-model="selectedValue"
      @change="changeSelect"
    >
      <option value="02">서울</option>
      <option value="031">경기</option>
      <option value="064">제주</option>
    </select>
  </div>
</template>
<script>
  export default {
    data() {
      return {
        selectedValue: '',
      }
    },
    methods: {
      changeSelect() {
        alert(this.selectedValue)
      },
    },
  }
</script>

 

Key 이벤트

 - Key 이벤트는 사용자가 키보드 자판을 입력할 때 발생하는 이벤트

 - 사용자로부터 엔터키가 입력되는지 다음과 같이 아주 쉽게 처리할 수 있음

<input @keyup.enter="submit">

 - Vue에서 자주 사용되는 Key 이벤트

.enter .up
.tab .down
.left .right
.esc .space
.delete (키보드에서 Del키, Backspace키)

 - Control, Shift, Alt 키와 같이 다른 키와 같이 사용되는 특수 키에 대해서는 다음과 같이 처리할 수 있음

<!-- Alt + Enter -->
<input @keyup.alt.enter="clear">

<!-- Ctrl + Click -->
<div @click.ctrl="doSomething">Do Something</div>
반응형

'JavaScript > Vue.js' 카테고리의 다른 글

컴포넌트 심화 학습(Props, $refs, $emit)  (2) 2021.07.16
Computed와 Watch  (0) 2021.07.15
랜더링(v-for, v-if, v-show)  (0) 2021.07.15
데이터 바인딩(Data Binding)  (0) 2021.07.15
Component(컴포넌트)란  (0) 2021.07.15