반응형

코드

  • 더하기 문제 맞추기 예시를 통해 v-model, v-on:submit, 랜덤숫자생성, event.preventDefault()에 대해 정리
<body>
    <div id="test">
        <div>{{num1}} + {{num2}} = ?</div>
        <form v-on:submit="SubmitForm">
            <input type="number" v-model="input">
            <button type="submit">입력</button>
            <div>{{result}}</div>
        </form>
    </div>
</body>
<script>
    new Vue({
        el: "#test",
        data: {
            num1: Math.ceil(Math.random()*10 ),
            num2: Math.ceil(Math.random()*10 ),
            input: '',
            result: '',
        },
        methods: {
            SubmitForm(event){
                event.preventDefault();
                if(this.num1 + this.num2 == this.input){
                    this.result="정답";
                    this.num1 = Math.ceil(Math.random()*10 );
                    this.num2 = Math.ceil(Math.random()*10 );
                    this.input = '';
                } else{
                    this.input =  '';
                    this.result = "오답";
                }
            },
        },
    });
</script>

코드 설명

  • Math.ceil(Math.random()*10) 을 통해 1~10사이의 랜덤 숫자 생성
  • input 태그에서 v-model을 사용함으로써 input과 연결
  • button의 type을 submit으로 지정해줌으로써 이 버튼이 폼 데이터를 제출하는 버튼이라는 것을 지정
  • 버튼이 클릭되면 v-on:submit이 실행되어서, SubmitForm 메소드 실행
  • 입력값이 두 랜덤숫자들의 합과 같으면 result를 "정답"으로 설정하고 다음문제 출제
  • 다르면 result를 "오답"으로 설정
  • 이 때, event.preventDefault()를 통해 페이지 새로고침을 방지함
  • 만약 안써주면 입력 버튼 클릭을 통한 폼 제출시 바로 페이지 새로고침이 됨

결과

  • 문제 출제

  • 오답 입력 시

  • 정답 입력 시

정리

  • v-model : Vue 인스턴스에서 데이터 속성과 HTML 요소를 연결할 때 사용
  • v-on:submit : 폼 제출시 사용
    • v-on:click과 마찬가지로 v-on:submit 대신 @submit을 써줘도 됨
  • Math.random() : 0~1사이의 소수 난수 발생
  • Math.ceil() : 주어진 숫자보다 크거나 같은 숫자 중 가장 작은 숫자 return
  • event.preventDefault() : 폼 제출 시 페이지 새로고침 방지
반응형

↓ 클릭시 이동

복사했습니다!