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 相关文章推荐
javascript 表格排序和表头浮动效果(扩展SortTable)
Apr 07 Javascript
Node.js文件操作详解
Aug 16 Javascript
javascript简单实现类似QQ头像弹出效果的方法
Aug 03 Javascript
javascript实现3D变换的立体圆圈实例
Aug 06 Javascript
JavaScript基础教程——入门必看篇
May 20 Javascript
关于javascript获取内联样式与嵌入式样式的实例
Jun 01 Javascript
ReactNative实现图片上传功能的示例代码
Jul 11 Javascript
JS实现同一DOM元素上onClick事件与onDblClick事件并存的解决方法
Jun 07 Javascript
详解vue指令与$nextTick 操作DOM的不同之处
Aug 02 Javascript
JavaScript常见JSON操作实例分析
Aug 08 Javascript
ES6常用小技巧总结【去重、交换、合并、反转、迭代、计算等】
Dec 21 Javascript
在Vue中创建可重用的 Transition的方法
Jun 02 Javascript
使用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不用内置函数对数组排序的两个算法代码
2010/02/08 PHP
PHP设计模式 注册表模式(多个类的注册)
2012/02/05 PHP
提高PHP性能的编码技巧以及性能优化详细解析
2013/08/24 PHP
php页面函数设置超时限制的方法
2014/12/01 PHP
PHP编程计算文件或数组中单词出现频率的方法
2017/05/22 PHP
ThinkPHP5.0框架结合Swoole开发实现WebSocket在线聊天案例详解
2019/04/02 PHP
jquery创建div 实现代码
2009/04/27 Javascript
javascript 折半查找字符在数组中的位置(有序列表)
2010/12/09 Javascript
js和css写一个可以自动隐藏的悬浮框
2014/03/05 Javascript
jquery根据属性和index来查找属性值并操作
2014/07/25 Javascript
JS判断是否360安全浏览器极速内核的方法
2015/01/29 Javascript
jQuery及JS实现循环中暂停的方法
2015/02/02 Javascript
小议JavaScript中Generator和Iterator的使用
2015/07/29 Javascript
JavaScript实现自动生成网页元素功能(按钮、文本等)
2015/11/21 Javascript
jQuery实现的自定义弹出层效果实例详解
2016/09/04 Javascript
jQuery中animate的几种用法与注意事项
2016/12/12 Javascript
Vue指令的钩子函数使用方法
2017/03/20 Javascript
微信小程序实战之自定义模态弹窗(8)
2017/04/18 Javascript
深入理解Node.js中通用基础设计模式
2017/09/19 Javascript
layer弹出层全屏及关闭方法
2018/08/17 Javascript
vue实现添加与删除图书功能
2018/10/07 Javascript
VUE基于NUXT的SSR 服务端渲染
2018/11/30 Javascript
基于vue写一个全局Message组件的实现
2019/08/15 Javascript
layui问题之渲染数据表格时,仅出现10条数据的解决方法
2019/09/12 Javascript
夯基础之手撕javascript继承详解
2020/11/09 Javascript
Python中字符编码简介、方法及使用建议
2015/01/08 Python
详解Python字符串对象的实现
2015/12/24 Python
python 读文件,然后转化为矩阵的实例
2018/04/23 Python
python的格式化输出(format,%)实例详解
2018/06/01 Python
Pycharm中切换pytorch的环境和配置的教程详解
2020/03/13 Python
html5给汉字加拼音加进度条的实现代码
2020/04/07 HTML / CSS
物业管理毕业生的自我评价
2014/02/17 职场文书
农村结婚典礼司仪主持词
2014/03/14 职场文书
创业融资计划书
2014/04/25 职场文书
初中政治教师教学反思
2016/02/23 职场文书
关于vue中如何监听数组变化
2021/04/28 Vue.js