进修笔记:
表单与v-model
表单与v-model
Vue.js供应了v-model
指令,用于在表单类元素上双向绑定数据。
运用v-model
后,表单控件显现的值只依靠所绑定的数据,不再体贴初始化时的value
属性,关于在<textarea></textarea>
之间插进去的值,也不会见效。
运用v-model
时,假如是用中文输入法输入中文,平常在没有选定词组前,也就是在拼音阶段,Vue时不会更新数据的,当敲下汉字时才会触发更新。
假如愿望老是及时更新,能够用@input
替换v-model
。事实上,v-model
也是一个特别的语法糖,只不过它会在差别的表单上智能处置惩罚。
单选按钮
单选按钮在零丁运用时,不须要v-model
,直接运用v-bind
把你当一个布尔范例的值,为真时选中,为否时不选。
<div id="app">
<input type="radio" :checked="picked" id="radio">
<label for="radio">单选按钮</label>
</div>
假如是组合运用来完成互斥挑选的结果,就须要v-model
合营value
来运用。
<div id="app">
<p>
<input type="radio" v-model="picked" value="html" id="html">
<label for="html">HTML</label>
</p>
<p>
<input type="radio" v-model="picked" value="js" id="js">
<label for="js">JavaScript</label>
</p>
<p>
<input type="radio" v-model="picked" value="css" id="css">
<label for="css">CSS</label>
</p>
<p>挑选的项:{{picked}}</p>
</div>
复选框
复选框零丁运用时,也是用v-model
绑定一个布尔值。
组合运用时,也是v-model
与value
一同,多个勾选框都绑定到同一个数组范例的数据,value
的值在数组中,就会选中这一项。这一历程也是双向的,在勾选时value
得知也会自动push
到这个数组中。
挑选列表
挑选列表就是下来挑选器,分为单选和多选两种体式格局。
<option>是备选项,假如含有value
属性,v-model
就会优先婚配value
值;假如没有,就会直接婚配<option>
的text
。
在营业中,<option>
经经常使用v-for
动态输出,value
和text
也是用v-bind
动态输出。
绑定值
在营业中,偶然须要绑定一个动态的数据,这时候能够运用v-bind
完成。
单选按钮
<div id="app">
<input type="radio" v-model="picked" :value="value">
<p>{{picked}}</p>
<p>{{value}}</p>
</div>
data: {
picked: false,
value: 123
},
在选中时,app.picked===app.value
,值都是123
。
复选框
<div id="app">
<input type="checkbox" v-model="toggle" :true-value="value1" :false-value="value2">
<p>{{toggle}}</p>
<p>{{value1}}</p>
<p>{{value2}}</p>
</div>
挑选列表
<div id="app">
<select v-model="selected">
<option :value="{number:123}">123</option>
</select>
{{selected.number}}
</div>
当选中时,app.selected
是一个Object,所以app.selected.number===123
。
修饰符
与事宜的修饰符相似,v-model
也有修饰符,用于掌握数据同步的机遇。
.lazy
在输入框中,v-model
默许是在input
事宜中同步输入框的数据,运用修饰符.lazy
会转变为在change
事宜中同步。
<div id="app">
<input type="text" v-model.lazy="message">
<p>{{message}}</p>
</div>
这时候,message
并非及时变化,而是在失焦或按回车键时才更新。
.number
运用修饰符.number
能够将输入转换成Number范例,不然输入的数字,但它的范例实际上是String,在数字输入框时比较有效。
<div id="app">
<input type="number" v-model.number="message">
<p>{{typeof message}}</p>
</div>
.trim
修饰符.trim
能够自动过滤输入的首尾空格。
<input type="text" v-model.trim="message">