废话不多说,直接上代码,代码有备注!!!

  • 方式一:利用 defineProperty 方法
<div><input type="text" placeholder="请输入数据" /></div>
<!--渲染区域-->
<div class="item-box"></div>
<button>重置</button>
<script>let btn = document.querySelector("button");let inpEl = document.querySelector("input[type='text']");let itemBox = document.querySelector(".item-box");// 数据let data = {};// 监听对象的属性(数据)变化Object.defineProperty(data, "message", {get() {// 更新视图层渲染itemBox.style["background"] = "skyblue";// 将文本框内容设置为空 (重置)inpEl.value = "";return this.value;},set(v1) {// 更新视图层渲染itemBox.innerHTML = v1;// 数据层赋值this.value = v1;},});// 利用 input 标签的事件inpEl.oninput = () => (data.message = inpEl.value);btn.onclick = () => (data.message = "");
</script>
  • 方式2: 利用 Proxy 和 Reflect 方法

tool.js

// 渲染函数
let render = (renderData) => {let ul = document.querySelector("ul");let str = "";renderData.forEach((e) => {str += `<li>${e.id} - ${e.name}</li>`;});ul.innerHTML = str;
};// 数据绑定
let binding = (target, bindEl) => {return new Proxy(target, {get(target, prop) {return Reflect.get(target, prop);},set(target, prop, value) {// 判断设置的属性是否为绑定的属性if (Reflect.has(target, bindEl)) {// 渲染页面render(value);}// 更新数据Reflect.set(target, prop, value);},});
}
<!--渲染区域-->
<ul></ul>
<button>模拟向后台请求数据</button>
<!-- 导入插件包 -->
<script src="./tool.js"></script>
<script>let btn = document.querySelectorAll("button");// 数据集合let data = {list: [],b: 0,};// 将 data 中的 list 进行双向绑定data = binding(data, "list");// 初始化数据(为了方便演示)data.list = [{ id: 1, name: "产品1" },{ id: 2, name: "产品2" },{ id: 3, name: "产品3" },{ id: 4, name: "产品4" },];// 发送请求btn[0].onclick = () => {// 向后端请求回来的数据let res = [{ id: 5, name: "产品5" },{ id: 6, name: "产品6" },{ id: 7, name: "产品7" },{ id: 8, name: "产品8" },];// 将后端数据放到数据集合中的 listdata.list = data.list.concat(res);};
</script>

欢迎访问我的个人博客

ES6语法实现数据的双向绑定相关推荐

  1. React入门---事件与数据的双向绑定-9

    上一节中,我们是从父组件给子组件传送数据,要实现事件与数据的双向绑定,我们来看如何从子组件向父组件传送数据; 接触之前,我们看一些里面函数绑定的知识: 例:通过点击事件改变state的age属性值: ...

  2. 【Vue】—数据的双向绑定v-model

    [Vue]-数据的双向绑定v-model

  3. AngularJS数据的双向绑定

    数据的双向绑定 Angular实现了双向绑定机制.所谓的双向绑定,无非是从界面的操作能实时反映到数据,数据的变更能实时展现到界面. 一个最简单的示例就是这样: <div ng-controlle ...

  4. 【Vue2 组件间数据的双向绑定】

    组件间数据的双向绑定 一.通过自定义事件 二.通过v-model 三.通过.sync修饰符 四.provide和inject 代码中的p-8,mt-8等,都是自己写的工具类,复制代码的同学,可以自行删 ...

  5. vue3数据的双向绑定

    vue3关于数据的双向绑定 一.script setup 现在,没必要把数据写到data里面,或者是写一个setup函数,再进行return出去. import进来的组件,可以直接在页面中使用,不再需 ...

  6. Vue之数据的双向绑定

    在vue中实现数据双向绑定的核心在于v-model 示例: <input type="text" name=" " v-model="userN ...

  7. v-model实现数据的双向绑定

    Vue.js提供了v-model指令,用于在表单类元素上双向绑定数据, 比如,在数据框上使用时,输入的内容会实时映射到绑定的数据上. <div id="app">< ...

  8. 微信小程序input数据的双向绑定

    先来看一下html代码 再来看下js代码 这种绑定实例就是给input的一个bindinput属性,指定了一个方法名字.如果想要实现双向绑定,必须使用this.setdata这个方法. 注意!我们在发 ...

  9. Vue中实现父子组件的数据的双向绑定(vue.sync的用法)

    项目场景: 前两天日常开发时,遇到需要父子组件双向绑定的问题,出现了一些BUG,但是考虑到组件的可维护性,vue中是不允许子组件改变父组件传的props值的 问题描述: 问题场景就是子组件传递数据给父 ...

  10. angularjs input标签用一个日期插件后数据不能双向绑定了_微信如何定时发朋友圈?(最方便最好用的办法!)...

    微信怎么发朋友圈(微信如何定时发朋友圈)作为一个运营新媒体的小编,很多情况下,我都会遇到定时发文的情况,对于我来说,定时发文很简单. 只要将文案编辑好,使用平台的定时发文功能就可以,所以,我就想,微信 ...

最新文章

  1. java设计一个bank类实现银行_SAP银企直连之平安银行(ECC版)
  2. All in one: pentest under metasploit
  3. 乱码的根本原因是字节和字符的问题(转)
  4. 公文转成电子文档需要注意的事项
  5. POJ 2750 鸡兔同笼
  6. 晚上去宾馆有什么是一定要带的?
  7. HTML5中本地储存概念是什么,什么优点 ,与cookie有什么区别?
  8. android 视频通话开启呼叫等待后,来第三方的视频通话,接通后通话时间一直显示为0,过几秒之后视频通话自己主动挂断...
  9. 遥感影像单波段辐射定标处理
  10. Dubbo限流方式源码阅读
  11. Python生成图文并茂的PDF报告
  12. WinZip 15注册码
  13. 基于ARM64架构飞腾2000CPU的浪潮CE3000F机器安装银河麒麟系统和Docker
  14. 商帮文化数据:十大商帮文化代理变量(数据+代码)
  15. C++实验5 游戏玩家类Player、两个道具类Helm和Armor
  16. 区块链是什么?简单理解区块链
  17. !!. 与 ?. 的区别
  18. 坚果nuts 加速 官网_5G坚果旗舰手机R2发布售价4499元起 搭载全新Smartisan OS 8.0操作系统...
  19. Python-property
  20. 自定义串口通信协议,如何实现?

热门文章

  1. Bellman-ford算法、SPFA算法、SPFA判断负环(附例题)
  2. 客服机器人代码_什么是第三方客服系统
  3. knn算法python代码识别手写数字_python使用KNN算法识别手写数字
  4. bt php,bt.php · jiehu0992/家谱familytree - Gitee.com
  5. mac 没有java_maven在Mac OS X上没有使用Java
  6. linux c语言播放midi,C语言实现--计算MIDI音符的频率
  7. group by很多字段是不是会很慢_数据量很大,分页查询很慢,推荐个优化方案!...
  8. java xssfworkbook_java - poi(XSSFWorkbook)读取excel(.xlsx)文件
  9. 如何安装python解释器_python基础系列教程——Python的安装与测试:python解释器、PyDev编辑器、pycharm编译器...
  10. linux档案内容怎么写,Linux cat输出档案命令详解