zoukankan      html  css  js  c++  java
  • 双向绑定

    <!DOCTYPE html>
    <html lang="en" dir="ltr">
      <head>
        <meta charset="utf-8">
        <title></title>
      </head>
      <body>
        <div id="div1">
          <input type="text" v-model="name"><br>
          姓名:{{name}}<br>
          年龄:{{age}}
        </div>
      </body>
      <script>
      let el=document.getElementById('div1');
    
      let template=el.innerHTML;
    
      let _data={
        name: 'blue',
        age: 18
      };
    
      let data=new Proxy(_data, {
        set(obj, name, value){
          //alert(`有人视图设置 ${name}=>${value}`);
          obj[name]=value;
    
          //数据变了
          //console.log('数据变了');
          render();
        }
      });
    
      render();
    
      function render(){
        //渲染
        el.innerHTML=template.replace(/{{w+}}/g, str=>{
          str=str.substring(2, str.length-2);
    
          return _data[str];
        });
    
        //找所有的v-model
        Array.from(el.getElementsByTagName('input'))
          .filter(ele=>ele.getAttribute('v-model'))
          .forEach(input=>{
            let name=input.getAttribute('v-model');
            input.value=_data[name];
    
            input.oninput=function (){
                console.log(this);
              data[name]=this.value;
            };
          });
      }
      </script>
    </html>
  • 相关阅读:
    Wannafly挑战赛9
    acm之图论基础
    Codeforces Round #459 (Div. 2)
    Codeforces Round #460 (Div. 2)
    浙南联合训练赛20180129
    AtCoder Regular Contest 090
    牛客练习赛11
    2018年1月26日天梯赛练习1
    csa Round #66 (Div. 2 only)
    EOJ Monthly 2018.1
  • 原文地址:https://www.cnblogs.com/angdh/p/14826502.html
Copyright © 2011-2022 走看看