티스토리 뷰

Front-end

[VueJS] method & event handling

코헴 2019. 5. 13. 13:32

[VueJS] method & event handling

method

메소드는 특정 객체에 포함되어 동작한다. VueJS에서는 메소드 선언을 Vue 객체에 methods 라는 어트리뷰트를 선언함으로써 생성 가능합니다.


주의할점이 하나 있는데, VueJS 에서 메소드선언에서는 arrow function이 사용되면 안됩니다.


그 이유는 methods 영역에 arrow function 선언시 this 바인딩이 안되므로, data()함수에 정의된 변수값에 접근이 불가능 하기 때문입니다.

<script>
new Vue({
  el: '#app',
  data() {
    return {
      counter: 0
    };
  },
  methods: {
    add: () => {
      this.counter++;
      console.log(this.counter);
    }
  }
})
</script>

위와같이 작성시 원하는대로 동작하지 않음

<script>
  new Vue({
    el: '#app',
    data() {
      return {
        counter: 0
      };
    },
    methods: {
      add() {
        this.counter++;
        console.log(this.counter);
      }
    }
  })
</script>

제대로 동작하는 코드

event handling

<div id="app">
    <button type="button" v-on:click="add">더하기 </button>
    {{ counter }}
</div>

위와같은 click 이벤트 생성시 v-on:click이후 영역은 javascript 코드 영역이므로, 연사자 실행이 가능합니다. 예를들어서 data() 영역에 선언된 counter 변수의 값을 click 이벤트로 증가시키는 등의 코드를 생성하고 싶다면

<div id="app">
  <button type="button" v-on:click="counter++">더하기 </button>
  {{ counter }}
</div>

위와 같이 입력하여 동작시킬 수 있습니다.

또한 이벤트 관련 지시자의 경우 이전 챕터에서 v-bind 를 : 로 줄여쓴 것처럼, @ 를 입력함으로써 줄여 쓸 수 있습니다.

<div id="app">
    <button type="button" @click="add">더하기 </button>
    {{ counter }}
</div>

또한 이벤트의 특정 실행 조건을 프로퍼티로 제공하므로 해당 프로퍼티를 학습하면 기존에 자바스크립트를 통해 복잡하게 구현하던 부분들을 간편하게 구현 가능합니다.

<input type="text" @keyup.enter="keyup"/>
<script>
methods: {
  keyup(ev) {
    console.log(ev);
    alert("엔터키 눌렸습니다 ^^");
  }
  /*if (ev.keyCode === 13) {
    console.log('엔터키 눌렸습니다 ^^');
  }*/
}
</script>

'Front-end' 카테고리의 다른 글

[VueJS] component  (0) 2019.05.13
[VueJS] attribute binding  (0) 2019.05.13
[VueJS] list  (0) 2019.05.13
[VueJS] data binding  (0) 2019.05.12
[Front-end] Javascript 기초 - 1  (0) 2019.01.28
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2025/02   »
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28
글 보관함