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


Posted in Javascript onMarch 04, 2019

数据变更同步到视图层有一个很重要的东西就是Proxy,Proxy的作用就是可以隐藏真正的对象,而用户去修改它的代理对象.Proxy可以监听数据的变化,例如

<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>

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

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

可以监控到data数据的改变,然后就可以将数据渲染到html中,就可以实现es6数据同步到视图层

最终代码

<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>

最终效果

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

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
Track Image Loading效果代码分析
Aug 13 Javascript
完美解决AJAX跨域问题
Nov 01 Javascript
JavaScript中的闭包(Closure)详细介绍
Dec 30 Javascript
Bootstrap每天必学之简单入门
Nov 19 Javascript
AngularJs Modules详解及示例代码
Sep 01 Javascript
jQuery实现可移动选项的左右下拉列表示例
Dec 26 Javascript
Node.js如何响应Ajax的POST请求并且保存为JSON文件详解
Mar 10 Javascript
67 个节约开发时间的前端开发者的工具、库和资源
Sep 12 Javascript
vue-cli中的babel配置文件.babelrc实例详解
Feb 22 Javascript
浅谈layui数据表格判断问题(加入表单元素),设置单元格样式
Oct 26 Javascript
uni-app如何实现增量更新功能
Jan 03 Javascript
jQuery实现放大镜案例
Oct 19 jQuery
使用webpack构建应用的方法步骤
Mar 04 #Javascript
详解element-ui中form验证杂记
Mar 04 #Javascript
JS使用数组实现的队列功能示例
Mar 04 #Javascript
JS使用栈判断给定字符串是否是回文算法示例
Mar 04 #Javascript
微信小程序textarea层级过高(盖住其他元素)问题的解决办法
Mar 04 #Javascript
一步快速解决微信小程序中textarea层级太高遮挡其他组件
Mar 04 #Javascript
使用ESLint禁止项目导入特定模块的方法步骤
Mar 04 #Javascript
You might like
一些常用的php简单命令代码集锦
2007/09/24 PHP
php生成xml时添加CDATA标签的方法
2014/10/17 PHP
Yii+MYSQL锁表防止并发情况下重复数据的方法
2016/07/14 PHP
php指定长度分割字符串str_split函数用法示例
2017/01/30 PHP
让iframe自适应高度(支持XHTML,支持FF)
2007/07/24 Javascript
javascript 控制 html元素 显示/隐藏实现代码
2009/09/01 Javascript
Jquery知识点一 Jquery的ready和Dom的onload的区别
2011/01/15 Javascript
select标记美化--JS式插件、后期加载
2013/04/01 Javascript
jQuery制作的别致导航有阴影背景高亮模式窗口
2014/04/15 Javascript
浅析js预加载/延迟加载
2014/09/25 Javascript
js实现动态创建的元素绑定事件
2016/07/19 Javascript
分享javascript、jquery实用代码段
2016/10/20 Javascript
基于ajax与msmq技术的消息推送功能实现代码
2016/12/26 Javascript
ES6新特性之类(Class)和继承(Extends)相关概念与用法分析
2017/05/24 Javascript
vue音乐播放器插件vue-aplayer的配置及其使用实例详解
2017/07/10 Javascript
angular.js + require.js构建模块化单页面应用的方法步骤
2017/07/19 Javascript
详解如何使用webpack打包JS
2018/06/21 Javascript
vue路由中前进后退的一些事儿
2019/05/18 Javascript
基于JavaScript实现表格隔行换色
2020/05/08 Javascript
解决vue刷新页面以后丢失store的数据问题
2020/08/11 Javascript
[09:40]DAC2018 4.5 SOLO赛 MidOne vs Miracle
2018/04/06 DOTA
[52:31]VP vs Serenity 2018国际邀请赛小组赛BO2 第二场 8.16
2018/08/17 DOTA
详解Python使用simplejson模块解析JSON的方法
2016/03/24 Python
Python基于property实现类的特性操作示例
2018/06/15 Python
pytorch 输出中间层特征的实例
2019/08/17 Python
TFRecord文件查看包含的所有Features代码
2020/02/17 Python
教你使用Sublime text3搭建Python开发环境及常用插件安装另分享Sublime text3最新激活注册码
2020/11/12 Python
python3实现飞机大战
2020/11/29 Python
python中@contextmanager实例用法
2021/02/07 Python
会计专业应届生求职信
2013/11/24 职场文书
办公室主任主任岗位责任制
2014/02/11 职场文书
反腐倡廉剖析材料
2014/09/30 职场文书
仓库统计员岗位职责
2015/04/14 职场文书
社区敬老月活动总结
2015/05/07 职场文书
2015年秋季小班开学寄语
2015/05/27 职场文书
入党后的感想
2015/08/10 职场文书