v-model
可以用 v-model 指令在表单 <input>、<textarea> 及 <select> 元素上创建双向数据绑定。v-model 会忽略所有表单元素的 value、checked、selected attribute 的初始值而总是将 Vue 实例的数据作为数据来源。
- text 和 textarea 元素使用 value property 和 input 事件;
- checkbox 和 radio 使用 checked property 和 change 事件;
- select 字段将 value 作为 prop 并将 change 作为事件。
#1. 文本
<input v-model="message" placeholder="edit me">
<p>Message is: {{ message }}</p>
#2. 多行文本
<textarea v-model="message"></textarea>
<p>{{ message }}</p>
#3. 复选框
<!-- 当选中时,checked=true -->
<input type="checkbox" id="checkbox" v-model="checked">
<label for="checkbox">{{ checked }}</label>
<!-- true-value与false-value属性,如下选中时为yes -->
<input type="checkbox" v-model="toggle" true-value="yes" false-value="no">
#4. 多个复选框,绑定到同一个数组
<input type="checkbox" id="jack" value="Jack" v-model="checkedNames">
<label for="jack">Jack</label>
<input type="checkbox" id="john" value="John" v-model="checkedNames">
<label for="john">John</label>
<input type="checkbox" id="mike" value="Mike" v-model="checkedNames">
<label for="mike">Mike</label>
<p>Checked names: {{ checkedNames }}</p>
#5. 单选按钮
<!-- 当选中第一个的时候,picked="one" -->
<input type="radio" id="one" value="One" v-model="picked">
<label for="one">One</label>
<input type="radio" id="two" value="Two" v-model="picked">
<label for="two">Two</label>
<p>Picked: {{ picked }}</p>
<!-- v-bind绑定,如下,选中时pick=a -->
<input type="radio" v-model="pick" v-bind:value="a">
#6. 选择框
<!-- 当选中A时,selected="A" -->
<select v-model="selected">
<option disabled value="">请选择</option>
<option>A</option>
<option>B</option>
<option>C</option>
</select>
<p>Selected: {{ selected }}</p>
#7. 选择框多选时绑定到一个数组----selected:[]
<select v-model="selected" multiple>
<option>A</option>
<option>B</option>
<option>C</option>
</select>
<p>Selected: {{ selected }}</p>
#8. 选择框v-for动态渲染
<select v-model="selected">
<option v-for="option in options" :value="option.value">
{{ option.text }}
</option>
</select>
<span>Selected: {{ selected }}</span>
#8. 选择框v-for动态渲染
data:{
selected:'A',
options:[
{ text: 'One', value: 'A' },
{ text: 'Two', value: 'B' },
{ text: 'Three', value: 'C' }
]
}
在文本区域插值不会生效
修饰符
-
.lazy在默认情况下,v-model 在每次 input 事件触发后将输入框的值与数据进行同步。 lazy 修饰符可以转为在 change 事件_之后_进行同步:<!-- 在“change”时而非“input”时更新 --> <input v-model.lazy="msg"> -
.number自动将用户的输入值转为数值类型
<input v-model.number="age" type="number"> -
.trim自动过滤用户输入的首尾空白字符
<input v-model.trim="msg">