美文网首页
js手写简单双向绑定

js手写简单双向绑定

作者: 希染丶 | 来源:发表于2019-05-29 17:40 被阅读0次

    什么是双向绑定

    1.当一个对象(或变量)的属性改变,那么调用这个属性地方也应该改变,模型到视图(model => view)
    2.当调用属性的这个地方改变了这个属性(通常是一个表单元素),那么这个对象(或变量)的属性也随之改变,即视图到模型(view => model)

    如何实现(怎么知道对象的属性变了)

    Object.defineProperty 设置对象属性的描述字段里面有两个属性set(设置属性时被调用)和get(获取属性时被调用)
    input检测属性值的改变,触发后对应修改对应的对象(或变量)
    例:

    <body>
        手写一个简单双向绑定<br/>
        <input type="text" id="model"><br/>
        <div id="modelText"></div>
    </body>
    <script>
        var user = {
          name: '希染'
        };
        var defaultName = '希染'
    
        var input = document.querySelector("#model");
        var text = document.querySelector("#modelText");
    
        input.value = user.name;
        text.textContent = user.name;
    
        // 数据到视图 model => view
        Object.defineProperty(user,"name",{
          get:function(){
            console.log('获取user')
          },
          set:function(val){
            console.log('修改user')
            input.value = val;
            text.textContent = val;
          }
        })
    
        // 视图到数据 view => model
        input.addEventListener('input',function(val){
          user.name = input.value;
        })
    <script>
    

    相关文章

      网友评论

          本文标题:js手写简单双向绑定

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