vuejs表单控件绑定

本文介绍了Vue.js中v-model指令用于表单控件的双向数据绑定,详细讲解了文本、多行文本、复选框、单选按钮和选择列表的绑定方式。并提到了v-model不关注初始化值,以及在语言切换场景下如何使用input事件。此外,还讨论了value的绑定以及修饰符的使用,包括延迟同步、数值转换和空格过滤等,帮助开发者更有效地处理用户输入。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、基础语法

vuejs中用v-model指令在表单控件元素上创建双向数据绑定。它会根据控件类型自动选取正确的方法来更新元素。但要注意的是v-model仅仅是语法糖,它只负责监听用户的输入时间一更新数据,并特别处理一些极端的例子。

注:1.·v-model`并不关心表单控件初始化所生成的值。因为它会选择Vue实例数据来作为具体的值
2.当控件有多种语言的需求时,v-model不会因为语言的改变而更新,在这种情况下要使用`input’事件来替代

1.文本

<input v-model="message" placeholder="edit me">
<p>Message is: {{ message }}</p>

2.多行文本

<span>Multiline message is:</span>
<p style="white-space: pre">{{ message }}</p>
<br>
<textarea v-model="message" placeholder="add multiple lines"></textarea>
注:在文本区域插值(<textarea></textarea>)并不会生效,应用v-model来替代

3.复选框

a.单个勾选框,逻辑值:
<input type="checkbox" id="checkbox" v-model="checked">
<label for="checkbox">{{ checked }}</label>
b.多个勾选框,绑定到同一个数组:
<input type="checkbox" id="jack" value="Jack" v-model="checkedNames">
<label for="jack">Jack</label>
<input type="checkbox" id="john" value="John" v-model="checkedNames">
<label for="john">John</label>
<input type="checkbox" id="mike" value="Mike" v-model="checkedNames">
<label for="mike">Mike</label>
<br>
<span>Checked names: {{ checkedNames }}</span>

4.单选按钮

<input type="radio" id="one" value="One" v-model="picked">
<label for="one">One</label>
<br>
<input type="radio" id="two" value="Two" v-model="picked">
<label for="two">Two</label>
<br>
<span>Picked: {{ picked }}</span>

5.选择列表

a.单选列表:
<select v-model="selected">
    <option>A</option>
    <option>B</option>
    <option>C</option>
</select>
<span>Selected: {{ selected }}</span>
b.多选列表(绑定到同一个数组):
<select v-model="selected">
    <option>A</option>
    <option>B</option>
    <option>C</option>
</select>
<span>Selected: {{ selected }}</span>
c.用v-for渲染:
//HTML
<select v-model="selected">
    <option v-for="option in options" v-bind:value="option.text">{{ option.text }}</option>
</select>
<span>Selected: {{ selected }}</span>
//JS
new Vue({
    el:'#id',
    data:{
        selected:'A',
        options:[
            {text:'One',value:'A'},
            {text:'Two',value:'B'},
            {text:'Three',value:'C'}
        ]
    }
});

二、绑定value

对于单选按钮,勾选框及选择列表选项,v-model绑定的value通常是静态字符串(对于勾选框是逻辑值):

//当选中时,`picked` 为字符串 "a"
<input type="radio" v-model="picked" value="a">
//`toggle` truefalse
<input type="checkbox" v-model="toggle">
//当选中时,`selected` 为字符串 "abc"
<select v-model="selected">
  <option value="abc">ABC</option>
</select>
通过`v-bind`可以自己定义控件选中时显示的value值
1.复选框
<input type="checkbox"
       v-model="toggle"
       v-bind:true-value="a"
       v-bind:false-value="b">
// 当选中时
vm.toggle === vm.a
// 当没有选中时
vm.toggle === vm.b
2.单选按钮
<input type="radio" v-model="pick" v-bind:value="a">
// 当选中时
vm.pick === vm.a
3.选择列表设置
<select v-model="selected">
    <!-- 内联对象字面量 -->
  <option v-bind:value="{ number: 123 }">123</option>
   <option v-bind:value="{ number: 456 }">456</option>
    <option v-bind:value="{ number: 789 }">789</option>
</select>
typeof vm.selected // -> 'object'
vm.selected.number // -> 123 || 456 || 789

修饰符

1..lazy

在默认情况下,v-modelinput事件中同步输入框的值与数据(除了上述语言问题部分),这是我们可以添加一个修饰符.lazy,从而转变为在change事件中同步:

<!-- 在 "change" 而不是 "input" 事件中更新 -->
<input v-model.lazy="msg" >
2..number

如果想自动将用户的输入值转为Number类型(如果原值的转换结果为NaN则返回原值),可以添加一个修饰符numberv-model来处理输入值:

<input v-model.number="age" type="number">

这通常很有用,因为在type="number"时HTML中输入的值也总是会返回字符串类型。

3.trim

如果要自动过滤用户输入的首尾空格,可以添加trim修饰符到v-model上过滤输入:

<input v-model.trim="msg">

总结:表单的总结绑定通常很有效,通过三种修饰符我们可以有效的对用户的输入进行处理,并根据自身需求决定什么时候响应事件;操作非常简单,绑定的单个控件时,我们我们往往只需要在data中使用一个变量设定初始值即可,对于多选,只需要将变量设为数组即可,选中控件的value值可以通过v-bind进行绑定。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值