基本用法
在之前的博客里面只是草草写了 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">