<div id="app">
<p>Counter: {{ counter }}</p>
<button v-on:click="counter += 1">클릭</button>
</div>
<script src="https://unpkg.com/vue@2.3"></script>
<script>
new Vue({
el: '#app',
data: {
counter: 0
}
});
</script>
<div id="example-2">
<!-- `greet`는 메소드 이름으로 아래에 정의되어 있습니다 -->
<button v-on:click="greet">Greet</button>
</div>
- capture - 이 핸들러를 캡처링 페이즈로 적용하도록 해줌
- stop - 이벤트 전파 중단
- self - 이벤트의 근원지가 해당 엘리먼트일 때 핸들러를 호출
- prevent - 브라우저의 기본 액션 금지
- once - 바인딩된 이벤트 핸들러를 한번 만 실행
- passive - 수식어는 이 이벤트가 기본 동작을 멈추지 않는다는 것을 브라우저에 알림
.passive와 .prevent를 함께 사용하지 마세요. 패시브 핸들러는 기본 이벤트를 막지 않습니다.
<!-- 클릭 이벤트 전파가 중단됩니다 -->
<a v-on:click.stop="doThis"></a>
<!-- 제출 이벤트가 페이지를 다시 로드 하지 않습니다 -->
<form v-on:submit.prevent="onSubmit"></form>
<!-- 수식어는 체이닝 가능합니다 -->
<a v-on:click.stop.prevent="doThat"></a>
<!-- 단순히 수식어만 사용할 수 있습니다 -->
<form v-on:submit.prevent></form>
<!-- 이벤트 리스너를 추가할 때 캡처모드를 사용합니다 -->
<!-- 즉, 내부 엘리먼트를 대상으로 하는 이벤트가 해당 엘리먼트에서 처리되기 전에 여기서 처리합니다. -->
<div v-on:click.capture="doThis">...</div>
<!-- event.target이 엘리먼트 자체인 경우에만 트리거를 처리합니다 -->
<!-- 자식 엘리먼트에서는 안됩니다 -->
<div v-on:click.self="doThat">...</div>
- enter
- tab
- delete ( Backspace + Delete)
- esc
- space
- up
- down
- left
- right
- shift
- alt
- control
- meta-window key or command key
<!-- Alt + C -->
<input @keyup.alt.67="clear">
<!-- Ctrl + Click -->
<div @click.ctrl="doSomething">Do something</div>
keyCodes를 정의할 때 별칭은 소문자 혹은 따옴표나 쌍따옴표로 감싸진
kebab-case로만 작성해야 합니다.
// `v-on:keyup.f1`을 사용할 수 있습니다.
Vue.config.keyCodes.f1 = 112
<button @click="counter += 1">클릭<button>
v-model은 모든 form 엘리먼트의 초기 value와 checked 그리고 selected 속성을 무시합니다. 항상 Vue 인스턴스 데이터를 원본 소스로 취급합니다. 컴포넌트의 data 옵션 안에 있는 JavaScript에서 초기값을 선언해야합니다.
<input type="radio" id="one" value="One" v-model="picked">
<label for="one">One</label>
<br>
<input type="radio" id="two" value="Two" v-model="picked">
<label for="two">Two</label>
<br>
<span>선택: {{ picked }}</span>
<select v-model="selected">
<option disabled value="">Please select one</option>
<option>A</option>
<option>B</option>
<option>C</option>
</select>
<span>선택함: {{ selected }}</span>
new Vue({
el: '...',
data: {
selected: ''
}
})
<!-- "input" 대신 "change" 이후에 동기화 됩니다. -->
<input v-model.lazy="msg" >
<input v-model.trim="msg">
<input v-model.number="age" type="number">
무조건 값이 number형으로 변환되지 않습니다. 어 문자부터 Number로 변환 가능한 부분까지만 변환되고 그 뒤의 부분은 무시당한 채로 값이 업데이트됩니다. 첫 문자부터 변환할 수 없는 문자라면, string을 반환합니다.
필터는 v-bind와 Mustache 외에 다른 디렉티브에서는 사용불가능합니다. 만약 다른 디렉티브에서 복잡한 데이터 변환을 해야 하는 경우 계산된 소성을 사용