(VueJs)v-model双向绑定

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<div id="app">
    <h2>{{message}}</h2>
    <input v-model="message" type="text">
</div>
<script src="../js/vue.js"></script>
<script>
    const app=new Vue({
        el:'#app',
        data:{
            message:'你好'
        }
    })
</script>
</body>
</html>

在这里插入图片描述
当改变文本框中的内容时,h2标签中的相应改变
在这里插入图片描述
当从控制台修改data中的message数据时,文本框中相应改变
在这里插入图片描述
双向绑定:
就是数据和标签双向互关联,一方改动另一方随之改变

原理:
原理其实也非常简单,就是v-bind的动态绑定和监听input事件

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<div id="app">
    <h2>{{message}}</h2>
<!--    文本框的v-model的应用-->
    <input v-model="message" type="text">
    <br>
<!--    单选按钮的v-model的应用-->
    <input type="radio" id="male" name="sex" v-model="sex" value="nan"><input type="radio" id="female" name="sex" v-model="sex" value="nv"><h2>你的性别是:{{sex}}</h2>
    <br>
<!--    单选框checkbox 的v-model的应用-->
    <label for="agree">
    <input type="checkbox" id="agree" v-model="agree">同意协议
    </label>
    <h2>你选择的是{{agree}}</h2>
    <br>
<!--    复选框checkbox的v-model的应用 -->
    <input type="checkbox" value="足球" v-model="balls">足球
    <input type="checkbox" value="篮球" v-model="balls">篮球
    <input type="checkbox" value="排球" v-model="balls">排球
    <input type="checkbox" value="乒乓球" v-model="balls">乒乓球
    <h2>你选择的球类:{{balls}}</h2>
    <br>
<!--    下拉框select(单选)的v-model的应用-->
    <select v-model="vegetable">
        <option value="蔬菜">蔬菜</option>
        <option value="黄瓜">黄瓜</option>
        <option value="白菜">白菜</option>
    </select>
    <h2>你选择的蔬菜是:{{vegetable}}</h2>
<!--    下拉框select(多选)的v-model的应用-->
    <select v-model="fruits" multiple>
        <option value="水果">水果</option>
        <option value="西瓜">西瓜</option>
        <option value="葡萄">葡萄</option>
    </select>
    <h2>你选择的水果是:{{fruits}}</h2>
</div>
<script src="../js/vue.js"></script>
<script>
    const app=new Vue({
        el:'#app',
        data:{
            message:'你好',
            sex:'123',
            agree:false,
            balls:[],
            vegetable:'请选择',
            fruits:[]
        }
    })
</script>
</body>
</html>

在这里插入图片描述
v-model的修饰符:

  • .lazy

    设置当控件失去聚焦或者敲回车的时候才会指向双向同步,如果没有.lazy每当更新就会双向同步,浪费资源

  • .number

    尽管input标签中设置了type属性是number,输入的是number但是data中会转化为string类型,加入.number后就会转为number类型,方便数据类型转化

  • .trim

    消去多余空格,只保留一个

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<div id="app">
    <h2>{{message}}</h2>
<!--   .lazy修饰符的作用:设置当控件失去聚焦或者敲回车的时候才会指向双向同步,如果没有.lazy每当更新就会双向同步,浪费资源-->
    <input type="text" v-model.lazy="message">
<!--    .number修饰符的作用:尽管input标签中设置了type属性是number,输入的是number但是data中会转化为string类型,加入.number后就会转为number类型,方便数据类型转化-->
    <hr>
    <input type="number" v-model="count">
    <h2>{{typeof count}}+{{count}}</h2>
    <input type="number" v-model.number="age">
    <h2>{{typeof age}}+{{age}}</h2>
    <hr>
<!--    .trim修饰符的作用:消去多余空格,只保留一个-->
    <input type="text" v-model.trim="name">
    <h2>{{name}}</h2>
</div>
<script src="../js/vue.js"></script>
<script>
    const app=new Vue({
        el:'#app',
        data:{
            message:'你好',
            age:10,
            count:100,
            name:''
        }
    })
</script>
</body>
</html>

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值