1.复选框
<input type="checkbox" v-model="toggle" true-exp="a" false-exp="b">
// 被选中时:
vm.toggle === vm.a
// 被取消选中时:
vm.toggle === vm.b
2.单选框
<input type="radio" v-model="pick" exp="a">
// 被选中时:
vm.pick === vm.a
动态select选项
当你需要为一个 <select> 元素动态渲染列表选项时,推荐将 options 特性和 v-model 指令配合使用,这样当选项动态改变时,v-model 会正确地同步:
<select v-model=”selected” options=”myOptions”></select>
在你的数据里,myOptions 应该是一个指向选项数组的路径或是表达式。
这个可选的数组可以包含简单的数组:
options = [‘a’, ‘b’, ‘c’]
或者可以包含格式如 {text:”, value:”} 的对象。该对象格式允许你设置可选项,让文本展示不同于背后的值:
options = [
{ text: 'A', value: 'a' },
{ text: 'B', value: 'b' }
]会被渲染成为
<select>
<option value="a">A</option>
<option value="b">B</option>
</select>
1.选项组
另外,数组里对象的格式也可以是 {label:”, options:[…]}。这样的数据会被渲染成为一个 <optgroup>:
[
{ label: 'A', options: ['a', 'b']},
{ label: 'B', options: ['c', 'd']}
]<select>
<optgroup label="A">
<option value="a">a</option>
<option value="b">b</option>
</optgroup>
<optgroup label="B">
<option value="c">c</option>
<option value="d">d</option>
</optgroup>
</select>
2.选项过滤
你的原始数据很有可能不是这里所要求的格式,因此在动态生成选项时必须进行一些数据转换。为了简化这种转换,options特性支持过滤器。将数据的转换逻辑做成一个可复用的 自定义过滤器 通常来说是个好主意:
Vue.filter('extract', function (value, keyToExtract) {
return value.map(function (item) {
return item[keyToExtract]})
})
<select
v-model="selectedUser"
options="users | extract 'name'">
</select>
上述过滤器将像 [{ name: ‘Bruce’ }, { name: ‘Chuck’ }] 这样的原始数据转化为 [‘Bruce’, ‘Chuck’],从而符合动态选项的格式要求。










