Vue双向绑定v-model及双向绑定修饰符

前言

这几年一直在it行业里摸爬滚打,一路走来,不少总结了一些python行业里的高频面试,看到大部分初入行的新鲜血液,还在为各样的面试题答案或收录有各种困难问题

于是乎,我自己开发了一款面试宝典,希望能帮到大家,也希望有更多的Python新人真正加入从事到这个行业里,让python火不只是停留在广告上。

微信小程序搜索:Python面试宝典

或可关注原创个人博客:https://lienze.tech

也可关注微信公众号,不定时发送各类有趣猎奇的技术文章:Python编程学习

双向绑定

v-model

使用v-model指令可以在表单inputtextarea以及select元素上创建双向数据绑定,根据表单上的值,自动更新模板变量中的值

v-model会忽略表单的初始值,比如:checkedvalueselected,如果需要的话,应该在javascript中首先声明初始值

text

获取到的为实际表单框中的字符串内容

<div id="container">
    <h3 v-html="message"></h3>
    <input type="text" v-model="message">
</div>
var vm = new Vue({
    el: "#container",
    data: {
        message: "这是个表单内容",
    },
})

textarea

<div id="container">
    <h3 v-html="message"></h3>
    <textarea v-model="message"></textarea>
</div>
// 同上

checkbox

单个复选框: 数据为绑定为truefalse的布尔值

<div id="container">
    <h3 v-html="checked"></h3>
    <input type="checkbox" v-model="checked">
</div>
var vm = new Vue({
    el: "#container",
    data: {
        checked: true,
    },
})

多个复选框:选中的结果会绑定到同一个数组,将保存的v-model变量创建为数组

<div id="container">
    <h3 v-html="checked"></h3>
    <input name="fruit" type="checkbox" value="apple"  v-model="checked">苹果
    <input name="fruit" type="checkbox" value="banana" v-model="checked">香蕉
    <input name="fruit" type="checkbox" value="orange" v-model="checked">橘子
</div>
var vm = new Vue({
    el: "#container",
    data: {
        checked: new Array,
    },
})

radio

获取到的为对应选项的value

<div id="container">
    <h3 v-html="picked"></h3>
    <input type="radio" name="gender" value="junior" v-model="picked"><input type="radio" name="gender" value="girl" v-model="picked"></div>
var vm = new Vue({
    el: "#container",
    data: {
        picked: "哈哈哈哈",
    },
})

select

获取到的为对应选项的value

<div id="container">
    <h3 v-html="selected"></h3>
    <select v-model="selected">
        <option disabled value="">你想去哪</option>
        <option value="山西">山西</option>
        <option value="北京">北京</option>
        <option value="上海">上海</option>
    </select>
</div>
var vm = new Vue({
    el: "#container",
    data: {
        selected: "",
    },
})

selects

设置select标签的multiple属性即可设置为多选下拉菜单,按着ctrl键可以多选

<div id="container">
    <h3 v-html="selecteds"></h3>
    <select multiple v-model="selecteds">
        <option value="上衣">上衣</option>
        <option value="裤子">裤子</option>
        <option value=""></option>  
    </select>
</div>
var vm = new Vue({
    el: "#container",
    data: {
        selecteds: new Array, // 多重数据一般都要保存成数组
    },
})

双向绑定修饰符

.lazy

默认情况下,v-modelinputtextarea表单中进行同步输入框的改动

添加了.lazy修饰符之后,对应的v-model绑定事件触发机制将变为change事件,只有在光标失去焦点时会触发

<div id="container">
    <h3 v-html="message"></h3>
    <input type="text" v-model.lazy="message">
</div>
var vm = new Vue({
    el: "#container",
    data: {
        message: "这是个表单内容",
    },
})

.number

如果用户希望将输入表单的内容处理为Number类型,可以使用.numberv-model进行修饰

如果表单字符串无法被处理为数字,则返回原始的值

<div id="container">
    <h3 v-html="typeof message"></h3>
    <input type="text" v-model.number="message">
</div>

.trim

使用.trim可以自动过滤输入框的首尾空格

<div id="container">
    <input type="text" v-model.trim="message">
    <br>
    <input type="text" v-model="message">
    <!-- 通过查看另一个表单中同步的缩进 -->
</div>        

动态绑定

当某些情况下,无法确定表单中所代表的属性值,可以使用v-bind进行动态绑定

v-model获取到的表单输入此时则是我们定义的v-bind属性值

<div id="container">
    <h3 v-html="message"></h3>
    <input type="radio" v-model="message" :value="choiceA"> A
    <input type="radio" v-model="message" :value="choiceB"> B
</div>
var vm = new Vue({
    el: "#container",
    data: {
        message: "", // 表单绑定变量
        choiceA: "Yes!", // 属性绑定变量,未来不需要修改标签中的value值即可动态修改
        choiceB: "No!",

    },
})
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

李恩泽的技术博客

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值