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 相关文章推荐
取得父标签
Nov 14 Javascript
js表格分页实现代码
Sep 18 Javascript
Javascript中Eval函数的使用
Mar 23 Javascript
原生Js实现元素渐隐/渐现(原理为修改元素的css透明度)
Jun 24 Javascript
浅谈javascript六种数据类型以及特殊注意点
Dec 20 Javascript
Extjs实现下拉菜单效果
Apr 01 Javascript
jQuery原理系列-css选择器的简单实现
Jun 07 Javascript
Vue.js学习之计算属性
Jan 22 Javascript
jQuery插件HighCharts绘制简单2D柱状图效果示例【附demo源码】
Mar 21 jQuery
vue 解决异步数据更新问题
Oct 29 Javascript
JS严格模式原理与用法实例分析
Apr 27 Javascript
使用js原生实现年份轮播选择效果实例
Jan 12 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
真正的ZIP文件操作类(php)
2007/07/21 PHP
php三维数组去重(示例代码)
2013/11/26 PHP
php实现遍历文件夹的方法汇总
2017/03/02 PHP
php数据序列化测试实例详解
2017/08/12 PHP
php 获取xml接口数据的处理方法
2018/05/31 PHP
PHP简单验证码功能机制实例详解
2019/03/27 PHP
在laravel5.2中实现点击用户头像更改头像的方法
2019/10/14 PHP
Prototype使用指南之string.js
2007/01/10 Javascript
use jscript with List Proxy Server Information
2007/06/11 Javascript
JQuery 将元素显示在屏幕的中央的代码
2010/02/27 Javascript
在Ajax中使用Flash实现跨域数据读取的实现方法
2010/12/02 Javascript
jquery一句话全选/取消全选
2011/03/01 Javascript
javascript学习笔记(二) js一些基本概念
2012/06/18 Javascript
jquery插件NProgress.js制作网页加载进度条
2015/06/05 Javascript
JS实现简单的图书馆享元模式实例
2015/06/30 Javascript
JS实现部分HTML固定页面顶部随屏滚动效果
2015/12/24 Javascript
JavaScript之事件委托实例(附原生js和jQuery代码)
2017/07/22 jQuery
微信小程序 POST请求的实例详解
2017/09/29 Javascript
React项目动态设置title标题的方法示例
2018/09/26 Javascript
JS实现数组去重,显示重复元素及个数的方法示例
2019/01/21 Javascript
layer.alert回调函数执行关闭弹窗的实例
2019/09/11 Javascript
vue实现网络图片瀑布流 + 下拉刷新 + 上拉加载更多(步骤详解)
2020/01/14 Javascript
vue计算属性+vue中class与style绑定(推荐)
2020/03/30 Javascript
python 正则式使用心得
2009/05/07 Python
Linux(Redhat)安装python3.6虚拟环境(推荐)
2018/05/05 Python
Python+OpenCV目标跟踪实现基本的运动检测
2018/07/10 Python
浅谈Python在pycharm中的调试(debug)
2018/11/29 Python
python字符串分割及字符串的一些常规方法
2019/07/24 Python
关于pytorch处理类别不平衡的问题
2019/12/31 Python
Python Tkinter Entry和Text的添加与使用详解
2020/03/04 Python
巴西男士胡须和头发护理产品商店:Beard
2017/11/13 全球购物
澳大利亚在线家具、灯饰和家居装饰店:LivingStyles
2018/11/20 全球购物
亮剑精神演讲稿
2014/05/23 职场文书
新闻稿格式范文
2015/07/18 职场文书
穷人该怎么创业?谨记以下几点
2019/07/11 职场文书
深入理解go slice结构
2021/09/15 Golang