Written by
최태열
on
on
Vue directive
v-bind
1. element의 속성에 binding을 위한 속성
2. 이미지 tag의 속성 + input tag의 속성에 적용
3. 함축 표현식 - v-bind 생략해도 동일한 binding 적용
<div id="app">
<img :src="imgSrc"> <br>
<input type="text" v-bind:value="message"><br>
<input type="text" :value="message"><br>
<a :href="link" target="_blank">구글</a>
</div>
<script>
let model = {
message: "v-bind directive",
imgSrc: "images/lion.png",
link: "https://www.google.com/"
}
let vm = new Vue({
el: "#app",
data: model
});
</script>
massage이 변경되면 v-bind된 element 의 값이 변경된다.
하지만 반대로 v-bind된 element의 value가 바뀌어도 message 값 자체는 변하지 않는다.
v-model
1. HTML 요소에서 양방향 바인딩 작업 가능
2. 이름을 입력하면 특정 div tag에 값이 출력
<div id="app2">
<input type="text" v-model.lazy="name" placeholder="이름을 입력하세요."><br>
이름 : <div v-text="name"></div>
</div>
<script>
let name = {
name: "최태열"
}
let vm2 = new Vue({
el: "#app2",
data: name
})
</script>
name을 변경하면 element의 값도 변경된다.
또한, element의 값을 변경해도 name의 값이 변경된다.
<div id="app3">
<label for="cars">Choose a car:</label>
<select name="cars" id="cars" v-model="car">
<option value="volvo">Volvo</option>
<option value="saab">Saab</option>
<option value="mercedes">Mercedes</option>
<option value="audi">Audi</option>
</select>
<br>
<span v-text="car"></span>
<span v-html></span>
</div>
<script>
let cars = {
car: "volvo"
}
let vm3 = new Vue({
el: "#app3",
data: cars
})
</script>
select된 값이 car에 들어간다.
v-text 는 car에 있는 텍스트 그 자체를 출력하고
v-html은 car에 있는 텍스트를 html로 번역하여 출력한다.
<div id="app4">
<input type="checkbox" id="vehicle1" name="vehicle" value="Bike" v-model="vehicle">
<label for="vehicle1"> I have a bike</label><br>
<input type="checkbox" id="vehicle2" name="vehicle" value="Car" v-model="vehicle">
<label for="vehicle2"> I have a car</label><br>
<input type="checkbox" id="vehicle3" name="vehicle" value="Boat" v-model="vehicle">
<label for="vehicle3"> I have a boat</label><br>
<span></span>
</div>
<span id="app4View" v-text="vehicle"></span>
<script>
let model4 = {
vehicle: []
}
let vm4 = new Vue({
el : "#app4",
data : model4
})
let vm5 = new Vue({
el : "#app4View",
data : model4
})
</script>
checkbox 같은 element에 다중으로 v-model을 걸고 상대값을 배열로 설정하면
선택한 값들이 모두 배열로 들어가게 된다.
Discussion and feedback