首页 > 其他 > 详细

vue双向绑定的原理

时间:2019-12-01 22:02:20      阅读:79      评论:0      收藏:0      [点我收藏+]

先不说一大堆乱七八糟的话,直接上代码,然后再解释

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title></title>
</head>
<body>
<input type="text" id="username">
<input type="text" id="uname">
<script type="text/javascript">
    var obj = {}
    Object.defineProperty(obj,"username",{
        get:function(){
            console.log("get init")
        },
        set:function(val){
            console.log("set init")
            document.getElementById(‘uname‘).value = val
        }
    })
    Object.defineProperty(obj,"uname",{
        set:function(val){
            document.getElementById(‘username‘).value = val
        }
    })
    document.getElementById(‘username‘).addEventListener("keyup",function(event){
        obj.username = event.target.value
    },false)
    document.getElementById(‘uname‘).addEventListener("keyup",function(event){
        obj.uname = event.target.value
    },false)
</script>
</body>
</html>

实现效果

技术分享图片

Object.defineProperty有两个底层的方法分别是set和get,双向绑定就主要用到了set。
如上面代码,我们用Object.defineProperty来定义obj的属性,分别定义了username,uname两个属性,只要给这两个属性赋值,set方法就会被隐秘的调用。
正好set方法里有个参数val,就是所赋的值。我们可以在set方法里,把这个val赋值给分别需要绑定的input的value值。
再通过绑定keyup事件,将输入的内容赋值给obj的两个属性,这样就实现了vue的双向绑定。

vue双向绑定的原理

原文:https://www.cnblogs.com/gehaoyu/p/11967533.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!