재밌고 어려운 IT를 이해해보자~!

이벤트 핸들러 본문

Vue.js

이벤트 핸들러

언제나즐거운IT 2024. 7. 1. 20:06

클릭, 드레그, 키보드 타이핑 등의 이벤트가 있을 때, 지정한 Javascript 코드를 실행한다.
vue에서는 v-on:click 혹은 @click 등의 표현을 사용한다.

 

click="" 안에 함수 넣기
만약 클릭 이벤트로 인해 실행해야 할 코드의 양이 많다면 어떻게 해야 할까?
script태그 안에 아래와 같이 methods 를 작성해주면 된다.
vue에서 함수 만들고 싶으면
methods : { 함수 () {} } 같이 만들면 된다.

 

만약 함수의 파라미터로 아무것도 받지 않을 경우, @click="upNum()"이 아닌 @click="upNum으로 써주어야 한다.
또한 함수 안에서 data의 변수를 사용할 때는 this.변수 의 형태처럼 this.를 붙여주어야 한다.

<template>
  <div class="menu">
    <a v-for="menu in menus" :key="menu">{{ menu }}</a>
  </div>
    <div v-for="(product, i) in products" :key="product">
      <h4>{{ product.name }}</h4>
      <p>{{ product.price }} 만원</p>
      <button v-on:click="upNum(i)">허위매물신고</button>
      <span> 신고수 : {{ product.num }}</span>
    </div>
  </template>
  
  <script>
  
  
  export default {
    name: 'App',
    components: {
    },
    data() {
      return {
        menus : ['Home', 'Shop', 'About'],
        products: [
          {
            name : '역삼동 원룸',
            price : 50,
            num : 0
          },
          {
            name : '구리시 원룸',
            price : 60,
            num : 0
          },
          {
            name : '영등포 원룸',
            price : 70,
            num : 0
          },
        ],
      }
    },
    methods : {
      upNum(i) {
        this.products[i].num++;
      }
    }
  }
  </script>
  
  <style>
  #app {
    font-family: Avenir, Helvetica, Arial, sans-serif;
    -webkit-font-smoothing: antialiased;
    -moz-osx-font-smoothing: grayscale;
    text-align: center;
    color: #2c3e50;
  }
  .menu {
    background-color: darkslateblue;
    padding: 15px;
    border-radius: 5px;
  }
  .menu a {
    color: white;
    padding: 10px;
  }
  </style>

 

 

 

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

Vue.js의 구조  (0) 2024.12.21
문법 정리  (0) 2024.07.01
반복문  (0) 2024.07.01
데이터 바인딩  (0) 2024.07.01
Vue.js 시작  (0) 2024.07.01
Comments