본문 바로가기
Vue/정리

[Vue] 이벤트 연결

by oda 2022. 12. 22.

v-on

- 버튼을 클릭하거나 키를 입력 하여 이벤트가 발생 할 때 Vue 메소드를 실행시키는 이벤트 핸들러

- v-on은 자주 사용되는 디렉티브이므로 v-on 대신 @을 사용할 수있다.

- HTML : <태그명 v-on:이벤트="메소드명"> or <태그명 @:이벤트="메소드명">

- JS : new Vue({ el:"#ID명", data:{프로퍼티명:값}, methods:{메소드명 : function( ){실행내용} }})

더보기

※ Vue 옵션

- el 옵션 : 어떤 HTML요소에 연결할지

- data 옵션 : 어떤 데이터를 연결할지

- methods옵션 : 어떤 함수를 연결할지


버튼을 클릭했을 때

- 버튼 클릭시 Vue 인스턴스의 메소드를 실행하는 처리를 만들 수 있다.

- 메소드를 실행한 후 버튼의 상태를 비활성화가 되도록 할 수 있다.

- <button v-on:click="메소드명">

<div id="app">
  <h2>클릭하면 값을 변경하는 예제</h2>
  <p>{{ count }}</p>
  <button v-on:click="countUp">1씩증가</button>

  <h2>클릭하면 비활성화되는 예제</h2>
  <button value="disable" v-bind:disabled="isClick" v-on:click="oneClick">
    비활성화하기
  </button>
</div>

<script>
  function dis() {
    alert("비활성 되었습니다.");
  }
  new Vue({
    el: "#app",
    data: {
      count: 0,
      isClick: false,
    },
    methods: {
      countUp: function () {
        this.count++;
      },
      oneClick: function () {
        this.isClick = true;
        dis();
      },
    },
  });
</script>

 

파라미터를 전달하여 메소드 실행하기

- methods: 에 작성할 메소드에 파리미터를 전달할 수 있다.

- <button v-on:click="메소드명(파라미터)">

<h2>클릭하면 지정된 값만큼 증가 시키는 예제</h2>
<div id="app">
    <p>{{ count }}</p> 
    <button v-on:click="countUp(3)">3증가</button>
    <button v-on:click="countUp(10)">10증가</button>
    <button v-on:click="countUp(100)">100증가</button>
</div>

<script>
    new Vue({
        el: '#app',
        data: {
            count:0
        },
        methods: {
            countUp: function(value) {
                this.count += value;
            }
        }
    })
</script>

 

키입력

- 키가 입력될 때 Vue 인스턴스의 메소드를 실행하는 처리를 만들 수 있다.

- 키 수식자를 지정하지 않으면 아무 키나 입력해도 메소드가 실행되므로 특정키를 입력했을 때만 반응하도록 하기 위해서는 반드시 키 수식자를 지정해야 한다.

- 이벤트에 시스템 수식자 키를 추가하면 시스템 키를 누르며 동시에 다른 키를 눌렀을 때(또는 클릭했을 때)만 메소드를 호출할 수 있다.

- <input v-on:keyup.키수식자="메소드명">

- <input v-on:keyup.키수식자.키수식자="메소드명">

더보기

※ 키 수식자

.enter .space .left .right
.delete .tab .48~.57(0~9) .65~.90(A~Z)
.down .up. .esc  

※ 시스템 수식자 키

.ctrl .alt .shift .meta(Windows : Winodw키, macOS: command키)
<div id="app">
    <h2>[Enter] 키를 누르면 얼럿을 표시하는 예제</h2>
    <input v-on:keyup.enter="showAlert" v-model="myText">
    <p>{{ myText }}</p>
    
    <h2>[Shift] + [Enter] 키를 누르면 얼럿을 표시하는 예제</h2>
    <input v-on:keyup.enter.shift="showAlert2" v-model="myText2">
    <p>{{ myText2 }}</p>
</div>

<script>
    new Vue({
        el: '#app',
        data: {
            myText: '',
            myText2: ''
        },
        methods: {
            showAlert: function() {
                alert("Enter 를 눌렀습니다.\n" + this.myText);
            },
            showAlert2: function() {
            	alert("Shift + Enter 를 눌렀습니다.\n" + this.myText2);
            }
        }
    })
</script>

 

'Vue > 정리' 카테고리의 다른 글

[Vue] ToDoList  (0) 2022.12.28
[Vue] 조건문  (0) 2022.12.23
[Vue] 사용자 입력 연결  (0) 2022.12.22
[Vue] 속성 지정  (0) 2022.12.21
[Vue] 데이터의 종류  (0) 2022.12.21

댓글