webveuje/vue/表单输入绑定v-model.md
2020-12-23 16:51:20 +08:00

184 lines
4.3 KiB
Markdown
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 表单输入绑定 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">
<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>
```
```
new Vue({
el: '#example-6',
data: {
selected: []
}
})
```
选择前:![image-20201223141638119](表单输入绑定v-model.assets/image-20201223141638119.png)
选择后:![image-20201223141710470](表单输入绑定v-model.assets/image-20201223141710470.png)
使用时需要按ctrl选中多个