v-model 除了用在 input 上以外,所有的表單項目也都可套用,如 select、checkbox、textarea 皆可,不同的項目應用方式略有不同。
Select 的選項可以直接使用 option 標籤中的 value,或是透過 v-for 搭配元件內的 data 產生多個 option,兩者都是同樣以 value 作為資料來源。
// html
<div id="app">
<h4>Select</h4>
<select name="" id="" class="form-control" v-model="selected">
<option disabled value="">請選擇</option>
<option value="跑步">跑步</option>
<option value="游泳">游泳</option>
<option value="自行車">自行車</option>
</select>
<p>小明喜歡的運動是 {{ selected }}。</p>
<hr>
<select name="" id="" class="form-control" v-model="selected2">
<option disabled value="">請選擇</option>
<option :value="item" v-for="item in selectData">{{ item }}</option>
</select>
<p>小明喜歡的運動是 {{ selected2 }}。</p>
</div>
// JS
var app = new Vue({
el: '#app',
data: {
selectData: ['跑步', '游泳', '自行車'],
selected: '',
selected2: '',
}
})
checkbox 作為一個資料的 true or false。
// html
<div id="app">
<div class="form-check">
<input type="checkbox" class="form-check-input" id="check1" v-model="checkbox1">
<label class="form-check-label" for="check1">{{ checkbox1 }}</label>
</div>
</div>
// JS
var app = new Vue({
el: '#app',
data: {
checkbox1: false,
},
});
或者可做為多個選向,將資料綁定到同一個陣列內。
// html
<div id="app">
<div class="form-check">
<input type="checkbox" class="form-check-input" id="check2" v-model="checkboxArray" value="雞">
<label class="form-check-label" for="check2">雞</label>
</div>
<div class="form-check">
<input type="checkbox" class="form-check-input" id="check3" v-model="checkboxArray" value="豬">
<label class="form-check-label" for="check3">豬</label>
</div>
<div class="form-check">
<input type="checkbox" class="form-check-input" id="check4" v-model="checkboxArray" value="牛">
<label class="form-check-label" for="check4">牛</label>
</div>
{{ checkboxArray }}
</div>
// JS
var app = new Vue({
el: '#app',
data: {
checkboxArray: [],
},
});
** Radio 則是單一選項。**
// html
<div id="app">
<div class="form-check">
<input type="radio" class="form-check-input" id="radio2" v-model="singleRadio" value="雞">
<label class="form-check-label" for="radio2">雞</label>
</div>
<div class="form-check">
<input type="radio" class="form-check-input" id="radio3" v-model="singleRadio" value="豬">
<label class="form-check-label" for="radio3">豬</label>
</div>
<div class="form-check">
<input type="radio" class="form-check-input" id="radio4" v-model="singleRadio" value="牛">
<label class="form-check-label" for="radio4">牛</label>
</div>
您選擇了:{{ singleRadio }}
</div>
// JS
var app = new Vue({
el: '#app',
data: {
singleRadio: '',
},
});
可以用 v-on 指令監聽網頁上的事件(如同純 JS 的 DOM 事件),並在觸發時運行一些 Vue 的方法。
官方文件:https://cn.vuejs.org/v2/guide/events.html
// html
<div id="example-1">
<button v-on:click="counter += 1">Add 1</button>
<p>The button above has been clicked {{ counter }} times.</p>
</div>
// JS
var example1 = new Vue({
el: '#example-1',
data: {
counter: 0
}
})