基本用法
在之前的博客里面只是草草写了 v-model 的用法,没有深入
因为 v-model 是 Vue 里面非常重要的指令,所以我们这次深入实践一下用法
v-model:
文本
可以用于input框,以及textarea等
注意: 所显示的值只依赖于所绑定的数据,
不再关心初始化时的插入的value
单行文本
input
<!-- html -->v-model 的基本用法:<br><input type="text" v-model="textValue"> <br>{{textValue}}<script>let vue = new Vue({el: "#app",data: {textValue:'嘿嘿,我是单行文本',}})</script>
多行文本
<!-- html --><textarea name="" id="" cols="30" rows="10" v-model="textareaValue"></textarea><br>{{textareaValue}}<script>data: {textareaValue: '嘿嘿,我是多行文本',}</script>
单选按钮
单个单选按钮,
直接用v-bind/v-model绑定一个布尔值,一般是 false,给空字符串也行
注意用 v-model 时,并不能绑定到值,所以建议用 v-bind
多个单选按钮也一样
单个单按钮
<!-- html -->单选框 <br>--------------- <br>单个单选框 <br>单个单选框---用v-bind: <input type="radio" v-bind:checked="oneradio"> <br>单个单选框---用v-model: <input type="radio" v-model="oneradio2"> <br><script>data: {oneradio: false,oneradio2: false,}</script>
多个单按钮
<!-- html -->多个单选框 <br>投票 TI11 获胜方:<br><input type="radio" id="one" value="LGD" v-model="result"><label for="one">LGD</label><input type="radio" id="two" value="OG" v-model="result"><label for="one">OG</label><div>获胜方:{{result}}</div><script>data: {result: '',}</script>
复选按钮
单个复选框:
直接用定一个布尔值,可以用v-model可以用v-bind
多个复选框
如果是组合使用,就需要vmodel来配合value使用,v-model绑定一 个数组—
如果绑定的是字符串,则会转化为true。false,与所有绑定的复选框的 checked属性相对应
单个复选按钮
<!-- html -->单个复选按钮 <br><input type="checkbox" id="checkbox" v-model="checked"><label for="checkbox">{{ checked }}</label> <br><script>data: {checked : false,}</script>
多个复选按钮
<!-- html -->多个复选按钮 <br>世界最强中单投票: <br><input type="checkbox" id="jack" value="Maybe" v-model="checkedNames"><label for="Maybe">Maybe</label><input type="checkbox" id="john" value="Topson" v-model="checkedNames"><label for="Topson">Topson</label><input type="checkbox" id="mike" value="Zard~" v-model="checkedNames"><label for="Zard~">Zard~</label><br><span>Checked names: {{ checkedNames }}</span><script>data: {checkedNames : [],}</script>
下拉框
如果是单选,所绑定的value值初始化可以为数组,也可以为字符串,有value直接优先匹配一个value值,没有value就匹配一个text值
如果是多选,就需要v-model来配合value使用,v-model绑定一个数组,与复选框类 似
v-model一定是绑定在select标签上
单选下拉框
<!-- html -->单选的下拉框:<br><select v-model="selected"><option value="A">A</option><option value="B">B</option><option value="C">C</option></select>----------现在选中的是 {{selected}} <br><script>data: {selected : []}</script>
多选下拉框
<!-- html --><select v-model="selectedmul" multiple><option value="A">A</option><option value="B">B</option><option value="C">C</option></select>----------现在选中的是 {{selectedmul}}<script>data: {selectedmul : []}</script>
小结
如果是单选,初始化最好给空字符串,因为 v-model 此时绑定的是静态字符串或者布尔值
如果是多选,初始化给定一个空数组
绑定值
单选按钮
单选按钮中,v-model 是不能绑定绑定值的,如果一定要绑定,需要用到 v-bind
<!-- html -->单选按钮:<input type="radio" v-model="pick" :value="LGD"> <br>此时 pick === data 中声明 LGD 的值 <br>{{pick}}<script>data: {pick: true,LGD: '老干爹是不可战胜的',}</script>
多选按钮
<!-- html -->复选按钮 <br><input type="checkbox" v-model="toggle" :ture-value="trueValue" :false-value="falseValue"><br>toggle:{{toggle}} <br>被选中 {{toggle == trueValue}} <br>未选中 {{toggle == falseValue}} <br>下拉菜单 <br><script>data: {toggle: true,trueValue: "trueValue",falseValue: "falseValue"}</script>
下拉菜单
在select标签上绑定value值对option并没有影响
但可以对 option 的每一项绑定一个值
<!-- html -->在select标签上绑定value值对option并没有影响<select v-model="selectValue" :value="{num:9527}"><option value="A">A</option><option value="B">B</option><option value="C">C</option></select> <br>现在选中的值是 {{selectValue}} <br>类型是{{typeof selectValue}}<br><script>data: {selectValue: "",}</script>//<option value="A" :value="{num:9527}">A</option>//这样才行
修饰符
.lazy
v-model默认是在input输入时实时同步输入框的数据,
.lazy修饰符,可以使其在失去焦点或者敲回车键之后在更新
<!-- 在“change”时而非“input”时更新 --><input v-model.lazy="msg">
.number
将输入的字符串转化为number类型
<input v-model.number="age" type="number">
.trim
如果要自动过滤用户输入的首尾空白字符,可以给 v-model 添加 trim 修饰符:
<input v-model.trim="msg">
