Vue.js의 이벤트 핸들링
게임개발자의 vue.js #1
게임개발자의 vue.js #2
이번 포스팅에서는 Vue.js의 이벤트 핸들링에서 대해서 살펴보겠습니다. 만약 vue.js가 처음이라면 게임개발자의 vue.js 1/2편을 먼저 읽기 바랍니다.
2개의 버튼을 추가하고, 버튼에 클릭 이벤트에 이벤트 핸들러를 추가하여 화면에 표시되는 이미지를 추가/삭제 하겠습니다. 먼저 HTML을 아래와 같이 작성합니다.
Vue 인스턴스와 연결할 app이라는 id를 갖는 div 하위에 div를 생성하고 button 태그로 버튼을 2개 추가합니다. button 태그에 버튼에 표시될 텍스트를 ADD/REMOVE라고 작성하고, @click 이라는 vue용 속성을 추가하고, @click 속성의 값으로 해당 버튼의 클릭 이벤트가 발생 시 호출될 메소드 이름을 입력합니다. 참고로 @click은 v-on:click의 단축 표기법으로, @click 대신 v-on:click 속성을 사용해도 됩니다.
이제 app을 id로 갖는 div와 바인딩되어 있는 Vue 오브젝트를 구현할 차례입니다. Vue 오브젝트에 methods 프로퍼티를 추가하고, button의 @click 속성의 값으로 지정한 메소드를 구현합니다.
ADD 버튼이 클릭되면 호출될 add 메소드를 구현하고, REMOVE 버튼이 클릭되면 호출될 remove 메소드를 구현합니다. add 메소드에서는 표시할 수 있는 이미지 데이터 images와 img 태그와 v-for에 의해 표시되는 icons의 배열 길이를 검사한 후 icons의 길이가 images보다 작다면 icons에 images의 값을 클릭 이벤트가 발생할 때 마다 하나 씩 추가합니다. remove는 icons의 길이가 0보다 작다면 pop 메소드를 호출해 하나 씩 제거합니다. icons는 HTML의 v-for와 img 태그를 통해 뷰에 바인딩되어 있어, 데이터가 변경도면 뷰가 자동으로 자동으로 갱신되도록 Vue 내부가 구현되어 있습니다. 이제 브라우저에서 결과를 확인해 봅시다.
v-on:click 이외에도 폼의 summit 이벤트를 핸들링할 수 있는 v-on:submit, 스크롤 이벤트를 핸들링할 수 있는 v-on:scroll.passive, 키 입력 이벤트를 핸들링할 수 있는 v-on:keyup.{키코드}, 마우스 이벤트를 핸들링할 수 있는 v-on:mouseover 등을 제공합니다. 보다 자세한 내용은 vus.js의 공식 홈페이지에서 확인할 수 있습니다.