184 lines
4.3 KiB
Markdown
184 lines
4.3 KiB
Markdown
# 表单输入绑定 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选中多个
|
||
|