v-bind 如何实现 v-model 的效果

564 阅读1分钟
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>v-model 双向绑定</title>
    <script src="https://cdn.bootcdn.net/ajax/libs/vue/2.6.14/vue.min.js"></script>
</head>
<style>
    * {
        padding: 0;
        margin: 0;
    }

    #v-model {
        display: flex;
        flex-direction: column;
        align-items: center;
        justify-content: space-evenly;
        width: 100%;
        height: 200px;
    }
</style>

<body>
    <div id="v-model">
        <h3>v-model 双向绑定底层代码实现</h3>
        <!-- 第一种实现方式 -->
        <input type="text" :value='name' @input="changeModel" > 
        <!-- <input type="text" :value='name' @input="name = $event.target.value" >  第二种实现方式     --> 
        <p>{{name}}</p>
    </div>
    <script>
    let vm = new Vue({
        el: "#v-model",
        data(){
            return{
                name:'LBJ'
            }
        },
        methods:{
        //  第一种实现方式 
            changeModel(event){
                this.name = event.target.value
            }
        }
     })
     
    </script>
   
</body>

</html>

以上代码是如何使用 v-bind 和事件对象方法实现 v-model 的双向绑定效果,当然了建议你看一下源码,巧了我下一篇就是的,哈哈哈。 简单来说, v-modeL 是双向的数据绑定,而 v-bind 是单向的绑定,而且这个绑定类型还挺多,比如对象、以及所有的属性(src、class等)