表单输入绑定

       可以用 v-model 指令在表单 <input><textarea> 及 <select> 元素上创建双向数据绑定。它会根据控件类型自动选取正确的方法来更新元素。尽管有些神奇,但 v-model 本质上不过是语法糖。它负责监听用户的输入事件以更新数据,并对一些极端场景进行一些特殊处理。

1、文本

<div id="id1">
    <!--文本-->
    <input v-model="message" placeholder="edit me">
    <p>Message is:{{message}}</p>
    <!--多行文本-->
    <span>multiline message is:</span>
    <p style="white-space: pre-line;">{{msg}}</p>
    <br>
    <textarea v-model="msg" placeholder="add multiple lines"></textarea>
</div>
var vm1 = new Vue({
        el:"#id1",
        data:{
            message:'',
            msg:''
        }
    })

2、复选框

(1)单个复选框,绑定到布尔值

<div id="id2">
    <p>单个复选框</p>
    <input type="checkbox" id="aa" name="checkbox" v-model="message">
    <label for="aa">{{message}}</label>
</div>
new Vue({
        el:"#id2",
        data:{
            message:false
        }
    })

(2)多个复选框,绑定到同一数组

<div id="id3">
    <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>
</div>
new Vue({
        el:"#id3",
        data:{
            checkedNames:[]
        }
    })

3、单选按钮

<div id="id4">
    <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>
</div>

new Vue({
        el:"#id4",
        data:{
            picked:''
        }
    })

4、选择框

(1)单选

<div id="id5">
    <select v-model="selected">
        <option disabled value="">请选择</option>
        <option>A</option>
        <option>B</option>
        <option>C</option>
    </select>
    <span>Selected:{{selected}}</span>
</div>
new Vue({
        el:"#id5",
        data:{
            selected:''
        }
    })

(2)多选——绑定到一个数组

<div id="id6">
    <select v-model="selected" multiple style="width: 50px;">
        <option>A</option>
        <option>B</option>
        <option>C</option>
    </select>
    <br>
    <span>Selected:{{selected}}</span>
</div>
new Vue({
        el:"#id6",
        data:{
            selected:[]
        }
    })

(3)用 v-for 渲染的动态选项

<div id="id7">
    <!--用v-for渲染的动态选项-->
    <select v-model="selected">
        <option v-for="item in items" v-bind:value="item.value">
            {{item.text}}
        </option>
    </select>
    <span>Selected:{{selected}}</span>
</div>
new Vue({
        el:"#id7",
        data:{
            items:[
                {text:'one',value:'A'},
                {text:'two',value:'B'},
                {text:'three',value:'C'}
            ]
        }
    })

5、选择框的选项

<select v-model="selected">
    <!-- 内联对象字面量 -->
  <option v-bind:value="{ number: 123 }">123</option>
</select>

// 当选中时
typeof vm.selected // => 'object'
vm.selected.number // => 123

6、修饰符

(1).lazy

在默认情况下,v-model 在每次 input 事件触发后将输入框的值与数据进行同步 (除了上述输入法组合文字时)。你可以添加 lazy 修饰符,从而转变为使用 change 事件进行同步:

<!-- 在“change”时而非“input”时更新 -->
<input v-model.lazy="msg" >

 

(2) .number

如果想自动将用户的输入值转为数值类型,可以给 v-model 添加 number 修饰符:

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

这通常很有用,因为即使在 type="number" 时,HTML 输入元素的值也总会返回字符串。如果这个值无法被 parseFloat() 解析,则会返回原始的值。

(3) .trim

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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值