Proxy:es6数据变更同步到视图层的方法

2019-03-0419:00:49WEB前端开发Comments1,965 views字数 859阅读模式

数据变更同步到视图层有一个很重要的东西就是Proxy,Proxy的作用就是可以隐藏真正的对象,而用户去修改它的代理对象.Proxy可以监听数据的变化,例如文章源自菜鸟学院-https://www.cainiaoxueyuan.com/gcs/9792.html

<div id="test">
  name:{{name}}
  age:{{age}}
</div>
<script>
  let el = document.getElementById('test');
  let datainner = {
    name:"Jack",
    age:"18"
  }
  let template = el.innerHTML;
  let data = new Proxy(datainner,{
    set(obj,name,value){
      console.log(name+"的值被操纵成了value"+value)
      obj[name]=value;
      console.log("数据改变了");
      render()
    }
  })
  data.name="Jack Chen"
</script>

Proxy:es6数据变更同步到视图层的方法文章源自菜鸟学院-https://www.cainiaoxueyuan.com/gcs/9792.html

Proxy:es6数据变更同步到视图层的方法文章源自菜鸟学院-https://www.cainiaoxueyuan.com/gcs/9792.html

可以监控到data数据的改变,然后就可以将数据渲染到html中,就可以实现es6数据同步到视图层文章源自菜鸟学院-https://www.cainiaoxueyuan.com/gcs/9792.html

最终代码文章源自菜鸟学院-https://www.cainiaoxueyuan.com/gcs/9792.html

 <script>
  let el = document.getElementById('test');
  let datainner = {
    name:"Jack",
    age:"18"
  }
  let template = el.innerHTML;
  let data = new Proxy(datainner,{
    set(obj,name,value){
      console.log(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);
      console.log(datainner[str]);
      return datainner[str]
    })
  }
</script>

最终效果文章源自菜鸟学院-https://www.cainiaoxueyuan.com/gcs/9792.html

Proxy:es6数据变更同步到视图层的方法文章源自菜鸟学院-https://www.cainiaoxueyuan.com/gcs/9792.html

  • 本站内容整理自互联网,仅提供信息存储空间服务,以方便学习之用。如对文章、图片、字体等版权有疑问,请在下方留言,管理员看到后,将第一时间进行处理。
  • 转载请务必保留本文链接:https://www.cainiaoxueyuan.com/gcs/9792.html

Comment

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定