Vue.js 中对于单选按钮,复选框及选择框的选项,v-model 绑定的值通常是静态字符串 (对于复选框也可以是布尔值):
<!-- 当选中时,`picked` 为字符串 "a" --> <input type="radio" v-model="picked" value="a"> <!-- `toggle` 为 true 或 false。当选中时,`toggle` 为 true。否则为 false --> <input type="checkbox" v-model="toggle"> <!-- 当选中第一个选项时,`selected` 为字符串 "abc" --> <select v-model="selected"> <option value="abc">ABC</option> </select>
注意,但是有时我们可能想把值绑定到 Vue 实例的一个动态属性上,这时可以用 v-bind 实现,并且这个属性的值可以不是字符串。
Vue.js 的 true-value 和 false-value 属性可以设置当复选框选中和未选中时的值,如果同时还指定了 value 属性,value 属性将被忽略。
注意,true-value 和 false-value 属性并不会影响输入控件的 value 属性,因为浏览器在提交表单时并不会包含未被选中的复选框。如果要确保表单中这两个值中的一个能够被提交,(即 “yes” 或 “no”),请换用单选按钮。例如:
<html>
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Vue</title>
<!-- 使用 CDN 引入 Vue 库 -->
<script src="https://cdn.jsdelivr.net/npm/vue@2/dist/vue.js"></script>
</head>
<body>
<div id="app">
<!-- true-value="yes" 设置选中的值为 yes -->
<!-- false-value="no" 设置未选中的值为 no -->
<input type="checkbox" v-model="toggle" true-value="yes" false-value="no">
<br>
<span>Checked names: {{ toggle }}</span>
</div>
<script type="text/javascript">
var app = new Vue({
el: "#app",
data: {
toggle: ''
}
});
</script>
</body>
</html>运行效果图:

通过 v-bind 给单选按钮的值绑定为一个变量的值,当单选按钮被选中时,值为绑定变量的值(而非默认的 null,如果使用 value 属性指定过值,则为指定的值)。例如:
<html>
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Vue</title>
<!-- 使用 CDN 引入 Vue 库 -->
<script src="https://cdn.jsdelivr.net/npm/vue@2/dist/vue.js"></script>
</head>
<body>
<div id="app">
<!-- 当选中时 app.pick == app.val -->
<input type="radio" v-model="pick" v-bind:value="val">
<br>
<span>Selected(pick): {{ pick }}</span>
<br>
<span>Selected(val): {{ val }}</span>
</div>
<script type="text/javascript">
var app = new Vue({
el: "#app",
data: {
pick: "",
val: 100
}
});
</script>
</body>
</html>运行效果图:

使用 v-bind 给选择框中的 <option> 动态绑定一个对象(内联对象),然后 v-model 进行双向绑定。当选中时,得到的值也是一个对象。例如:
<html>
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Vue</title>
<!-- 使用 CDN 引入 Vue 库 -->
<script src="https://cdn.jsdelivr.net/npm/vue@2/dist/vue.js"></script>
</head>
<body>
<div id="app">
<select v-model="selected">
<!-- 内联对象字面量 -->
<option v-bind:value="{ number: 111 }">111</option>
<option v-bind:value="{ number: 222 }">222</option>
<option v-bind:value="{ number: 333 }">333</option>
</select>
<span>Selected: {{ selected }}</span>
</div>
<script type="text/javascript">
var app = new Vue({
el: "#app",
data: {
selected: null
}
});
</script>
</body>
</html>运行效果图:
