2020-12-23 10:29:16 +08:00
|
|
|
|
# 表单输入绑定 v-model
|
|
|
|
|
|
|
|
|
|
### 基本用法
|
|
|
|
|
|
|
|
|
|
用v-model 指令在表单input, textarea, select 元素上创建双向绑定值
|
|
|
|
|
|
|
|
|
|
v-model 使用时,会忽略所有表单元素的value, checked, selected 属性设置的初始值,表单元素的初始值由v-model的初始值决定
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
v-model为不同的输入元素使用不同的property并抛出不同的事件
|
|
|
|
|
|
|
|
|
|
- text 和 textarea 元素使用 `value` property 和 `input` 事件;
|
|
|
|
|
- checkbox 和 radio 使用 `checked` property 和 `change` 事件;
|
|
|
|
|
- select 字段将 `value` 作为 prop 并将 `change` 作为事件。
|
|
|
|
|
|
|
|
|
|
### v-model 使用
|
|
|
|
|
|
|
|
|
|
语法:v-model="data中的属性"
|
|
|
|
|
|
|
|
|
|
示例:
|
|
|
|
|
|
|
|
|
|
- 文本
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
<input v-model="message" placeholder="edit me">
|
|
|
|
|
<p>Message is: {{ message }}</p>
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
- 多行文本
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
<span>Multiline message is:</span>
|
|
|
|
|
<p style="white-space: pre-line;">{{ message }}</p>
|
|
|
|
|
<br>
|
|
|
|
|
<textarea v-model="message" placeholder="add multiple lines"></textarea>
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
- 复选框
|
|
|
|
|
|
|
|
|
|
- 单个复选框
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
<input type="checkbox" id="checkbox" v-model="checked">
|
|
|
|
|
<label for="checkbox">{{ checked }}</label>
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
![image-20201222175835286](表单输入绑定v-model.assets/image-20201222175835286.png)未选中
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
![image-20201222175902811](表单输入绑定v-model.assets/image-20201222175902811.png) 已选中
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
- 多个复选框 绑定到同一个数组
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
<input type="checkbox" id="jack" value="Jackval" v-model="checkedNames">
|
|
|
|
|
<label for="jack">Jack</label>
|
|
|
|
|
<input type="checkbox" id="john" value="Johnval" v-model="checkedNames">
|
|
|
|
|
<label for="john">John</label>
|
|
|
|
|
<input type="checkbox" id="mike" value="Mikeval" v-model="checkedNames">
|
|
|
|
|
<label for="mike">Mike</label>
|
|
|
|
|
<br>
|
|
|
|
|
<span>Checked names: {{ checkedNames }}</span>
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
new Vue({
|
|
|
|
|
el: '...',
|
|
|
|
|
data: {
|
|
|
|
|
checkedNames: []
|
|
|
|
|
}
|
|
|
|
|
})
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
未选择时:![image-20201222180149362](表单输入绑定v-model.assets/image-20201222180149362.png)
|
|
|
|
|
|
|
|
|
|
选中时:![image-20201222180209565](表单输入绑定v-model.assets/image-20201222180209565.png)
|
|
|
|
|
|
|
|
|
|
> 注 选中的时候v-modal对应的是input元素的value 属性
|
|
|
|
|
|
|
|
|
|
- 单选按钮
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
<div id="example-4">
|
|
|
|
|
<input type="radio" id="one" value="Oneval" v-model="picked">
|
|
|
|
|
<label for="one">One</label>
|
|
|
|
|
<br>
|
|
|
|
|
<input type="radio" id="two" value="Twoval" v-model="picked">
|
|
|
|
|
<label for="two">Two</label>
|
|
|
|
|
<br>
|
|
|
|
|
<span>Picked: {{ picked }}</span>
|
|
|
|
|
</div>
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
new Vue({
|
|
|
|
|
el: '#example-4',
|
|
|
|
|
data: {
|
|
|
|
|
picked: ''
|
|
|
|
|
}
|
|
|
|
|
})
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
未选时:![image-20201222180600963](表单输入绑定v-model.assets/image-20201222180600963.png)
|
|
|
|
|
|
|
|
|
|
选择后:
|
|
|
|
|
|
|
|
|
|
![image-20201222180642082](表单输入绑定v-model.assets/image-20201222180642082.png)
|
|
|
|
|
|
|
|
|
|
> 注 选中的时候v-modal对应的是input元素的value 属性
|
|
|
|
|
|
|
|
|
|
- 选择框
|
|
|
|
|
|
|
|
|
|
- 单选:
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
<div id="example-5">
|
|
|
|
|
<select v-model="selected">
|
|
|
|
|
<option disabled value="">请选择</option>
|
|
|
|
|
<option>A</option>
|
|
|
|
|
<option>B</option>
|
|
|
|
|
<option>C</option>
|
|
|
|
|
</select>
|
|
|
|
|
<span>Selected: {{ selected }}</span>
|
|
|
|
|
</div>
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
new Vue({
|
|
|
|
|
el: '...',
|
|
|
|
|
data: {
|
|
|
|
|
selected: ''
|
|
|
|
|
}
|
|
|
|
|
})
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
未选择:![image-20201222180952802](表单输入绑定v-model.assets/image-20201222180952802.png)
|
|
|
|
|
|
|
|
|
|
选择后:![image-20201222181015791](表单输入绑定v-model.assets/image-20201222181015791.png)
|
|
|
|
|
|
|
|
|
|
> 注 选中的时候v-modal对应的是option元素的value属性
|
|
|
|
|
|
|
|
|
|
- 多选
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
<div id="example-6">
|
2020-12-23 16:51:20 +08:00
|
|
|
|
<select v-model="selected" multiple="multiple" style="width: 50px;">
|
|
|
|
|
<option>A</option>
|
|
|
|
|
<option>B</option>
|
|
|
|
|
<option>C</option>
|
|
|
|
|
<option>D</option>
|
|
|
|
|
<option>E</option>
|
|
|
|
|
<option>F</option>
|
|
|
|
|
</select>
|
|
|
|
|
<br>
|
|
|
|
|
<span>Selected: {{ selected }}</span>
|
|
|
|
|
</div>
|
2020-12-23 10:29:16 +08:00
|
|
|
|
```
|
2020-12-23 16:51:20 +08:00
|
|
|
|
|
2020-12-23 10:29:16 +08:00
|
|
|
|
```
|
|
|
|
|
new Vue({
|
|
|
|
|
el: '#example-6',
|
|
|
|
|
data: {
|
|
|
|
|
selected: []
|
2020-12-23 16:51:20 +08:00
|
|
|
|
}
|
2020-12-23 10:29:16 +08:00
|
|
|
|
})
|
|
|
|
|
```
|
2020-12-23 16:51:20 +08:00
|
|
|
|
|
|
|
|
|
选择前:![image-20201223141638119](表单输入绑定v-model.assets/image-20201223141638119.png)
|
|
|
|
|
|
|
|
|
|
选择后:![image-20201223141710470](表单输入绑定v-model.assets/image-20201223141710470.png)
|
|
|
|
|
|
|
|
|
|
使用时需要按ctrl选中多个
|
2020-12-23 10:29:16 +08:00
|
|
|
|
|