-
元素 |
绑定属性 |
事件类型 |
<input> - text |
value 属性 |
input 事件 |
<textarea> |
value 属性 |
input 事件 |
<input> - radio |
checked 属性 |
change 事件 |
<input> - checkbox |
checked 属性 |
change 事件 |
<select> |
value 属性 |
change 事件 |
- <input> - text
-
单行文本输入
let msg = ref('')
传统方式 - 通过事件和属性绑定实现双向绑定;这里采用内联事件|行内事件
<input type="text" @input="msg = $event.target.value" :value="msg" required>
<input type="text" @input="(e) => { msg = e.target.value }" :value="msg" required>
<div>{{ msg }}</div>
双向绑定
<input type="text" v-model="msg" required>
<div>{{ msg }}</div>
- <input> - radio
-
单选;多选一
不指定 value 的话,只能获取单选框的选中状态 checked 是 true 还是 false,并不知道选择了谁
值为静态数据 male、female
let gender = ref('')
传统方式
<input type="radio" name="gender" value="male" @change="(e) => gender = e.target.value">male
<input type="radio" name="gender" value="female" @change="(e) => gender = e.target.value">female
<div>{{ gender }}</div>
双向绑定 - 选项都绑定gender
<input type="radio" name="gender" value="male" v-model="gender">male
<input type="radio" name="gender" value="female" v-model="gender">female
<div>{{ gender }}</div>
- <input> - checkbox
-
多选
通常需要为每个 <input> 指定值 value,并使用同一个名字 name 以确保它们是同一组
如果不指定数据|value,只能获取复选框的选中状态 checked 是 true 还是 false,并不知道选择了谁
<input type="checkbox" @change="selItem">
const selItem = (e) => {
console.log(e.target.checked)
}
值为静态数据:code、sing、game、read
like是数组类型,不能是字符串
let like = ref([])
传统方式
<input type="checkbox" name="ulike" @change="sel" value="code">code
<input type="checkbox" name="ulike" @change="sel" value="sing">sing
<input type="checkbox" name="ulike" @change="sel" value="game">game
<input type="checkbox" name="ulike" @change="sel" value="read">read
<div>{{ like }}</div>
const sel = (e) => {
e.target.checked ? like.value.push(e.target.value) : like.value = like.value.filter(item => item !== e.target.value)
}
双向绑定 - 选项都绑定数据like,就可以知道选择了哪些
<input type="checkbox" name="ulike" v-model="like" value="code">code
<input type="checkbox" name="ulike" v-model="like" value="sing">sing
<input type="checkbox" name="ulike" v-model="like" value="game">game
<input type="checkbox" name="ulike" v-model="like" value="read">read
<div>{{ like }}</div>
-
<input>的 radio 类型和 checkbox 类型,绑定的是 checked 属性 并侦听 change 事件
如果不指定 value,其默认值是 on - The default value for checkboxes and radio buttons is on
- <textarea>
-
留言、评论
let msg = ref('')
传统方式 - 通过事件和属性绑定实现双向绑定;这里采用内联事件|行内事件
<textarea @input="(e) => { msg = e.target.value }" :value="msg" required></textarea>
<div>{{msg}}</div>
双向绑定
<textarea v-model="msg" required></textarea>
<div">{{msg}}</div>
不可以使用插值表达式{{}}
<textarea v-model="msg" required>{{msg}}</textarea>
- <input> 的 text 类型和 <textarea>,绑定的是 value 属性 并侦听 input 事件
- <select>
-
下拉列表;下拉框;值为静态数据 123
请自行完成传统方式的双向绑定
<select v-model = 'sel'>
<option value='1'>1</option>
<option value='2'>2</option>
<option value='3'>3</option>
</select>
<div>{{sel}}</div>
- <select> 绑定的是 value 属性 并侦听 change 事件