v-model底层原理分析

v-model是Vue实现数据双向绑定的关键指令,它通过Object.defineProperty()监听数据变化并更新视图。当输入框内容改变时,会触发input事件,同步更新data中的绑定值。文章通过示例展示了如何使用input事件模拟v-model的效果。
摘要由CSDN通过智能技术生成

1.1.1 原理分析

v-model就是vue的双向绑定的指令,能将页面上控件输入的值同步更新到相关绑定的data属性,也会在更新data绑定属性时候,更新页面上输入控件的值。

v-model的实现原理大致是,通过Object.defineProperty()方法来实现Vue数据的属性的绑定,一旦监听到数据变化,则更新数据关联的虚拟DOM树,当然在模版编译的时候,为指令v-model绑定input事件,当输入的内容发生改变时,同步更新data中绑定的数据。

1.1.2 实现

我们可以通过给input框绑定一个input事件来模拟实现数据的双向绑定的效果

<div id="app">
        <p>{{msg}}</p>
        <p>
            <input type="text"  v-bind:value="msg" v-on:input="change">
        </p>
    </div>
<script src="./js/vue.js"></script>
    <script>
        var vm=new Vue({
            //模板选择器
            el:'#app',
            //数据中心
            data(){

                return{
                   msg:'hi vuejs'
                }

            },
            methods:{
                change(event){
                console.log(event);
                this.msg=event.target.value
                
                }
            
            }
           })

预览:

等价于:

 <div id="app">
        <p>{{msg}}</p>
        <p>
            <input type="text"  v-model='msg' v-on:input="change">
        </p>
    </div>
 <script src="./js/vue.js"></script>
    <script>
        var vm=new Vue({
            //模板选择器
            el:'#app',
            //数据中心
            data(){

                return{
                   msg:'hi vuejs'
                }

            },
            methods:{
                change(event){
                    console.log(event);
                   
                }

            }
        })
    </script>

 

 

 

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值