美文网首页
v-model 真实的实现原理

v-model 真实的实现原理

作者: 糖小羊儿 | 来源:发表于2021-02-04 16:18 被阅读0次

v-model 是数据双向绑定

  • 浅层理解:将触发input事件来修改value值
  • 深层理解:利用Object.defineProperty()数据劫持来实现
<div>
    <button id="myBtn">改变username</button>
    <input type="text" id="myInput">
    <h1 id="myTitle"></h1>
</div>
  • 当我们修改userInfo的值的时候,进行拦截,然后更新dom
window.onload=function(){
    let userinfo = {
        username:'小明',
    };
    //开始监控
    watcher();
    function watcher(){
        Object.defineProperty(userinfo, "username", {
        set(value) {
            updateDom(value);
        },
        get(val) {
          return val;
        },
      });
    }
    //更新dom数据
    function updateDom(value){
        document.querySelector('#myInput').value = value;
        document.querySelector('#myTitle').innerHTML = value;
    }
    //给input绑定input事件,实时修改username的值
    document.querySelector('#myInput').oninput=function(e){
        let value = e.target.value;
        userinfo.username = value;
    }
    //给button绑定点击事件,修改username的值
    document.querySelector('#myBtn').onclick=function(){
        let value = '小明';
        userinfo.username = value;
    }
}

相关文章

  • v-model 真实的实现原理

    v-model 是数据双向绑定 浅层理解:将触发input事件来修改value值 深层理解:利用Object.de...

  • v-model 控制组件显示隐藏

    1、v-model原理 监听了 input事件 2、实现

  • v-model语法糖

    原理: v-model是value+input的语法糖,是v-band和v-on的简洁写法。v-model就实现了...

  • v-model双向绑定原理 实现自定义v-model命令

    v-model双向绑定原理,实现自定义v-model 本文会随着时间进行更正 再次更新:2019/10/16 15...

  • v-model原理

    1. v-model是什么? 在表单控件或者组件上实现双向绑定 2. v-model 原理: vue的双向绑定是由...

  • vue表单

    vue中表单主要通过v-model实现数据的双向绑定,实现原理主要通过javascript的object.defi...

  • Vue之v-model

    目标:1、了解v-model的本质。2、了解v-model的实现原理。 我们知道Vue的核心特性之一是双向绑定,v...

  • vue中的v-model原理,与组件自定义v-model

    VUE中的v-model可以实现双向绑定,但是原理是什么呢?往下看看吧 根据官方文档的解释,v-model其实是一...

  • v-model的实现原理

    vue中的v-model很好用,我们经常用它做双向绑定: v-model其实是个语法糖,它实际上是做了两步动作:1...

  • 7.v-model的原理

    v-model的实现原理:首先,通过属性绑定value,然后通过input事件,来动态的修改msg的值,来实现v-...

网友评论

      本文标题:v-model 真实的实现原理

      本文链接:https://www.haomeiwen.com/subject/djbbtltx.html