'v-' 접두사가 있는 속성
v-on:submit.prevent="onSubmit"
Name, Argument, Modifiers, Value 로 구성된다
Value는 자바스크립트에 값이 있어야 한다!
표현식 값이 변경될 때 DOM에 반응적으로 업데이트를 적용한다
예시:
<button v-on:click="counter += 1">클릭 횟수: {{ counter }}</button>
HTML 페이지를 어떻게 만들 것인가?
DOM에 Vue 객체의 데이터를 선언적으로 바인딩할 수 있는 HTML 기반 템플릿 구문을 사용
{{ }} 해당 구성 요소 인스턴스의 msg 속성 값으로 대체
예시:
<span>메시지: {{ msg }}</span>
실제 HTML을 출력하려면 데이터를 해석해야 해서 v-html을 사용
예시:
<div v-html="rawHtml"></div>
속성에 바인딩 하기 위해서!
예시:
<img v-bind:src="imageSrc" alt="이미지">
콧수염 구문 내부, 모든 directive 속성값 ('v-') 에서 모두 JavaScript 표현식을 사용할 수 있다!
예시:
<div>{{ message.split('').reverse().join('') }}</div>
예시:
<a :href="url" :title="'링크: ' + title">{{ linkText }}</a>
예시:
<div :class="{ active: isActive, 'text-danger': hasError }"></div>
CDN vs SFC
예시:
<button @click="count++">인라인 핸들러: {{ count }}</button>
트리거 하는 기본 DOM 객체를 자동으로 수신한다
직접 호출하기 위해서는 Inline Handlers 에서 직접 호출
인자에 직접 접근하기 위해서는 $event 이런식으로 접근 가능
예시:
<button @click="greet">메서드 핸들러</button>
Bubbling 밑에까지 찍고 올라오기
stop 버블링해서 다시 올라가는 도중 자기를 실행하고 멈춰버린다
prevent
self 자신이 소스인지 확인하고 소스인 경우에만 실행한다
capture
예시:
<form @submit.prevent="onSubmit">기본 동작 방지</form>
엔터만 눌렸을 때 버튼을 처리하기 위해서는..?
예시:
<input @keyup.enter="submit">
직접 접근하는 것을 지양하긴 하는데..
특정 요소를 지정하기 위해서는 ref 사용
예시:
<input ref="inputField">
form을 처리할 때 사용자가 input에 입력하는 값을 실시간으로 JavaScript 상태에 동기화 해야 하는 경우
1. v-bind, v-on 함께 사용
2. v-model 사용
v-model을 활용한 실시간 입력데이터와 화면을 동기화!
예시:
<input v-model="message" placeholder="여기에 입력하세요">
<p>메시지: {{ message }}</p>
boolean 값, 배열
예시:
<input type="checkbox" v-model="checked"> {{ checked ? '체크됨' : '체크 안됨' }}
예시:
<select v-model="selected">
<option value="">선택하세요</option>
<option value="a">A</option>
<option value="b">B</option>
</select>
<span>선택됨: {{ selected }}</span>
.lazy, .number, .trim
예시:
<input v-model.trim="message"> <!-- 앞뒤 공백 자동 제거 -->
<input v-model.number="age" type="number"> <!-- 숫자로 자동 변환 -->
<input v-model.lazy="message"> <!-- change 이벤트 후 동기화 -->